diff --git a/libm65/genjt9.f90 b/libm65/genjt9.f90 index d87a5a2a5..5ce8160a8 100644 --- a/libm65/genjt9.f90 +++ b/libm65/genjt9.f90 @@ -1,26 +1,27 @@ -subroutine genjt9(message,minutes,lwave,msgsent,d8,iwave,nwave) +subroutine genjt9(message,minutes,msgsent,d6) -! Encodes a "JT9-minutes" message and returns array d7(85) of tone -! values in the range 0-8. If lwave is true, also returns a generated -! waveform in iwave(nwave), at 12000 samples per second. +! Encodes a "JT9-minutes" message and returns array d6(85) of tone +! values in the range 0-8. - parameter (NMAX=1800*12000) !Max length of wave file character*22 message !Message to be generated character*22 msgsent !Message as it will be received - real*8 dt,phi,f,f0,dfgen,dphi,twopi - integer*2 iwave(NMAX) !Generated wave file - integer*4 d0(12) !72-bit message as 6-bit words - integer*1 d1(72) !72 single bits - integer*4 d2(9) !72 bits as 8-bit words - integer*1 d3(9) !72 bits as 8-bit bytes - integer*1 d4(206) !Encoded information-carrying bits - integer*1 d5(206) !Bits from d4, after interleaving - integer*4 d6(69) !Symbols from d5, values 0-7 - integer*4 d7(69) !Gray-coded symbols, values 0-7 - integer*4 d8(85) !Channel symbols including sync, values 0-8 + integer*4 d0(13) !72-bit message as 6-bit words + integer*1 d1(13) !72 bits and zero tail as 8-bit bytes + integer*1 d2(206) !Encoded information-carrying bits + integer*1 d3(206) !Bits from d2, after interleaving + integer*4 d4(69) !Symbols from d3, values 0-7 + integer*4 d5(69) !Gray-coded symbols, values 0-7 + integer*4 d6(85) !Channel symbols including sync, values 0-8 + + integer*4 t0(13) !72-bit message as 6-bit words + integer*1 t1(13) !72 bits and zero tail as 8-bit bytes + integer*1 t2(206) !Encoded information-carrying bits + integer*1 t3(206) !Bits from d2, after interleaving + integer*4 t4(69) !Symbols from d3, values 0-7 + integer*4 t5(69) !Gray-coded symbols, values 0-7 + integer*4 t6(85) !Channel symbols including sync, values 0-8 - logical lwave integer isync(85) data isync/ & 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0, & @@ -31,67 +32,38 @@ subroutine genjt9(message,minutes,lwave,msgsent,d8,iwave,nwave) data twopi/6.283185307179586476d0/ save - call packmsg(message,d0) !Pack message into 12 6-bit bytes - call unpackbits(d0,12,6,d1) !Unpack into 72 bits - - nbits=72 - nbytes=9 - call packbits(d1,nbits,8,d2) !Pack into 9 8-bit words - do i=1,9 - if(d2(i).lt.128) d3(i)=d2(i) - if(d2(i).ge.128) d3(i)=d2(i)-256 - enddo - - call encode232(d3,nbytes,d4) !Convolutional code, K=32, r=1/2 + call packmsg(message,d0) !Pack message into 12 6-bit bytes + call unpackmsg(d0,msgsent) + call entail(d0,d1) nsym2=206 - call interleave9(d4,1,d5) - call packbits(d5,nsym2,3,d6) - call graycode(d6,69,1,d7) + call encode232(d1,nsym2,d2) !Convolutional code, K=32, r=1/2 + call interleave9(d2,1,d3) + call packbits(d3,nsym2,3,d4) + call graycode(d4,69,1,d5) ! Insert sync symbols (ntone=0) and add 1 to the data-tone numbers. j=0 do i=1,85 if(isync(i).eq.1) then - d8(i)=0 + d6(i)=0 else j=j+1 - d8(i)=d7(j)+1 + d6(i)=d5(j)+1 endif enddo - nwave=0 +! t6=d6 +! j=0 +! do i=1,85 +! if(isync(i).eq.1) cycle +! j=j+1 +! t5(j)=t6(i)-1 +! enddo - if(lwave) then - nsps=0 - if(minutes.eq.1) nsps=6912 - if(minutes.eq.2) nsps=15360 - if(minutes.eq.5) nsps=40960 - if(minutes.eq.10) nsps=82944 - if(minutes.eq.30) nsps=250880 - if(nsps.eq.0) stop 'Bad value for minutes in genjt9.' - -! Set up necessary constants - dt=1.d0/12000.d0 - f0=1500.d0 - dfgen=12000.d0/nsps - phi=0.d0 - i=0 - k=0 - do j=1,85 - f=f0 +d7(j)*dfgen - dphi=twopi*dt*f - do i=1,nsps - phi=phi+dphi - if(phi.gt.twopi) phi=phi-twopi - xphi=phi - k=k+1 - iwave(k)=32767.0*sin(xphi) - enddo - enddo - nwave=85*nsps - endif - - call unpackmsg(d0,msgsent) +! call graycode(t5,69,-1,t4) +! call unpackbits(t4,nsym2,3,t3) +! call interleave9(t3,-1,t2) +! print*,'A',d2-t2 return end subroutine genjt9 diff --git a/libm65/interleave9.f90 b/libm65/interleave9.f90 index 0626cf878..e3026a9bf 100644 --- a/libm65/interleave9.f90 +++ b/libm65/interleave9.f90 @@ -3,7 +3,7 @@ subroutine interleave9(ia,ndir,ib) integer j0(0:205) logical first data first/.true./ - save first,j0 + save first,j0 !Save not working, or j0 overwritten ??? if(first) then k=-1 diff --git a/libm65/jt9sim.f90 b/libm65/jt9sim.f90 index a4dc719df..88f2dd5c3 100644 --- a/libm65/jt9sim.f90 +++ b/libm65/jt9sim.f90 @@ -7,8 +7,7 @@ program jt9sim integer*2 iwave !Generated waveform (no noise) real*8 f0,f,dt,twopi,phi,dphi,baud,fspan character msg0*22,message*22,msgsent*22,arg*8,fname*11 - logical lwave - integer*4 d8(85) + integer*4 d6(85) common/acom/dat(NMAX),iwave(NMAX) nargs=iargc() @@ -41,7 +40,6 @@ program jt9sim dt=1.d0/fsample !Sample interval (s) twopi=8.d0*atan(1.d0) npts=12000*(60*minutes-6) - lwave=.false. nsps=0 if(minutes.eq.1) nsps=6912 if(minutes.eq.2) nsps=15360 @@ -72,7 +70,7 @@ program jt9sim endif if(msg0.ne.' ') then - call genjt9(message,minutes,lwave,msgsent,d8,iwave,nwave) + call genjt9(message,minutes,msgsent,d6) endif rewind 12 @@ -81,7 +79,7 @@ program jt9sim if(msg0.eq.' ') then read(12,1004) message 1004 format(a22) - call genjt9(message,minutes,lwave,msgsent,d8,iwave,nwave) + call genjt9(message,minutes,msgsent,d6) endif f=f0 @@ -96,7 +94,7 @@ program jt9sim baud=12000.0/nsps k=12000 !Start at t = 1 s do isym=1,85 - freq=f + d8(isym)*baud + freq=f + d6(isym)*baud dphi=twopi*freq*dt do i=1,nsps phi=phi + dphi @@ -111,18 +109,10 @@ program jt9sim do i=1,npts iwave(i)=nint(rms*dat(i)) -! iwave(i)=nint(100.0*dat(i)) enddo write(10) ihdr,iwave(1:npts) close(10) - - - do i=1,30000 - write(71,3001) i,iwave(12000+i) -3001 format(2i8) - enddo - enddo 999 end program jt9sim diff --git a/libm65/met8.21 b/libm65/met8.21 new file mode 100644 index 000000000..a5d3006ea --- /dev/null +++ b/libm65/met8.21 @@ -0,0 +1,256 @@ + -25.6 1.000 -9.966 1.000000 0.000000 + -25.4 1.000 -9.966 1.000000 0.000000 + -25.2 1.000 -9.966 1.000000 0.000000 + -25.0 1.000 -9.966 1.000000 0.000000 + -24.8 1.000 -9.966 1.000000 0.000000 + -24.6 1.000 -9.966 1.000000 0.000000 + -24.4 1.000 -9.966 1.000000 0.000000 + -24.2 1.000 -9.966 1.000000 0.000000 + -24.0 1.000 -9.966 1.000000 0.000000 + -23.8 1.000 -9.966 1.000000 0.000000 + -23.6 1.000 -9.966 1.000000 0.000000 + -23.4 1.000 -9.966 1.000000 0.000000 + -23.2 1.000 -9.966 1.000000 0.000000 + -23.0 1.000 -9.966 1.000000 0.000000 + -22.8 1.000 -9.966 1.000000 0.000000 + -22.6 1.000 -9.966 1.000000 0.000000 + -22.4 1.000 -9.966 1.000000 0.000000 + -22.2 1.000 -9.966 1.000000 0.000000 + -22.0 1.000 -9.966 1.000000 0.000000 + -21.8 1.000 -9.966 1.000000 0.000000 + -21.6 1.000 -9.966 1.000000 0.000000 + -21.4 1.000 -9.966 1.000000 0.000000 + -21.2 1.000 -9.966 1.000000 0.000000 + -21.0 1.000 -9.966 1.000000 0.000000 + -20.8 1.000 -9.966 1.000000 0.000000 + -20.6 1.000 -9.966 1.000000 0.000000 + -20.4 1.000 -9.966 1.000000 0.000000 + -20.2 1.000 -9.966 1.000000 0.000000 + -20.0 1.000 -9.966 1.000000 0.000000 + -19.8 1.000 -9.966 1.000000 0.000000 + -19.6 1.000 -9.966 1.000000 0.000000 + -19.4 1.000 -9.966 1.000000 0.000000 + -19.2 1.000 -9.966 1.000000 0.000000 + -19.0 1.000 -9.966 1.000000 0.000000 + -18.8 1.000 -9.966 1.000000 0.000000 + -18.6 1.000 -9.966 1.000000 0.000000 + -18.4 1.000 -9.966 1.000000 0.000000 + -18.2 1.000 -9.966 1.000000 0.000000 + -18.0 1.000 -9.966 1.000000 0.000000 + -17.8 1.000 -9.966 1.000000 0.000000 + -17.6 1.000 -9.966 1.000000 0.000000 + -17.4 1.000 -9.966 1.000000 0.000000 + -17.2 1.000 -9.966 1.000000 0.000000 + -17.0 1.000 -9.966 1.000000 0.000000 + -16.8 1.000 -9.966 1.000000 0.000000 + -16.6 1.000 -9.966 1.000000 0.000000 + -16.4 1.000 -9.966 1.000000 0.000000 + -16.2 1.000 -9.966 1.000000 0.000000 + -16.0 0.988 -5.858 0.991379 0.008621 + -15.8 1.000 -9.966 1.000000 0.000000 + -15.6 0.991 -6.313 0.993711 0.006289 + -15.4 0.993 -6.629 0.994950 0.005051 + -15.2 1.000 -9.966 1.000000 0.000000 + -15.0 0.995 -7.055 0.996241 0.003759 + -14.8 1.000 -9.966 1.000000 0.000000 + -14.6 0.991 -6.371 0.993958 0.006042 + -14.4 1.000 -9.966 1.000000 0.000000 + -14.2 0.991 -6.313 0.993711 0.006289 + -14.0 0.992 -6.426 0.994186 0.005814 + -13.8 0.991 -6.288 0.993600 0.006400 + -13.6 0.990 -6.113 0.992775 0.007225 + -13.4 0.990 -6.152 0.992968 0.007032 + -13.2 0.992 -6.534 0.994606 0.005394 + -13.0 0.996 -7.332 0.996898 0.003102 + -12.8 0.990 -6.184 0.993121 0.006879 + -12.6 0.994 -7.016 0.996136 0.003864 + -12.4 0.993 -6.658 0.995049 0.004950 + -12.2 0.991 -6.369 0.993953 0.006047 + -12.0 0.992 -6.559 0.994699 0.005301 + -11.8 0.989 -6.002 0.992197 0.007803 + -11.6 0.991 -6.304 0.993671 0.006329 + -11.4 0.987 -5.826 0.991188 0.008812 + -11.2 0.985 -5.632 0.989919 0.010081 + -11.0 0.989 -5.995 0.992162 0.007838 + -10.8 0.984 -5.544 0.989284 0.010717 + -10.6 0.983 -5.377 0.987966 0.012034 + -10.4 0.979 -5.108 0.985502 0.014498 + -10.2 0.977 -4.954 0.983869 0.016131 + -10.0 0.971 -4.652 0.980118 0.019882 + -9.8 0.975 -4.870 0.982896 0.017104 + -9.6 0.974 -4.822 0.982324 0.017676 + -9.4 0.970 -4.608 0.979490 0.020510 + -9.2 0.970 -4.623 0.979702 0.020298 + -9.0 0.970 -4.621 0.979679 0.020321 + -8.8 0.967 -4.472 0.977465 0.022535 + -8.6 0.962 -4.261 0.973915 0.026085 + -8.4 0.960 -4.186 0.972538 0.027462 + -8.2 0.957 -4.098 0.970806 0.029194 + -8.0 0.956 -4.062 0.970061 0.029939 + -7.8 0.953 -3.975 0.968209 0.031791 + -7.6 0.942 -3.677 0.960918 0.039082 + -7.4 0.946 -3.768 0.963301 0.036699 + -7.2 0.937 -3.550 0.957308 0.042692 + -7.0 0.933 -3.463 0.954652 0.045348 + -6.8 0.929 -3.377 0.951866 0.048134 + -6.6 0.920 -3.212 0.946042 0.053958 + -6.4 0.917 -3.164 0.944202 0.055798 + -6.2 0.911 -3.058 0.939981 0.060019 + -6.0 0.903 -2.939 0.934818 0.065182 + -5.8 0.895 -2.829 0.929642 0.070358 + -5.6 0.884 -2.690 0.922540 0.077459 + -5.4 0.877 -2.608 0.917972 0.082028 + -5.2 0.869 -2.531 0.913509 0.086491 + -5.0 0.858 -2.411 0.905967 0.094033 + -4.8 0.846 -2.301 0.898525 0.101475 + -4.6 0.834 -2.201 0.891269 0.108731 + -4.4 0.821 -2.096 0.883085 0.116915 + -4.2 0.806 -1.992 0.874340 0.125660 + -4.0 0.790 -1.882 0.864307 0.135693 + -3.8 0.775 -1.790 0.855445 0.144555 + -3.6 0.755 -1.678 0.843726 0.156274 + -3.4 0.737 -1.587 0.833538 0.166462 + -3.2 0.713 -1.473 0.819841 0.180159 + -3.0 0.691 -1.376 0.807345 0.192655 + -2.8 0.667 -1.280 0.794093 0.205907 + -2.6 0.640 -1.181 0.779404 0.220596 + -2.4 0.612 -1.084 0.764178 0.235822 + -2.2 0.581 -0.987 0.747708 0.252292 + -2.0 0.548 -0.895 0.731037 0.268963 + -1.8 0.510 -0.796 0.712035 0.287965 + -1.6 0.472 -0.706 0.693474 0.306526 + -1.4 0.425 -0.606 0.671514 0.328486 + -1.2 0.378 -0.514 0.649948 0.350053 + -1.0 0.328 -0.425 0.627452 0.372548 + -0.8 0.274 -0.338 0.604549 0.395451 + -0.6 0.212 -0.249 0.579151 0.420849 + -0.4 0.146 -0.163 0.553389 0.446611 + -0.2 0.075 -0.079 0.526648 0.473352 + 0.0 0.000 0.000 0.500000 0.500000 + 0.2 -0.079 0.075 0.473352 0.526648 + 0.4 -0.163 0.146 0.446611 0.553389 + 0.6 -0.249 0.212 0.420849 0.579151 + 0.8 -0.338 0.274 0.395451 0.604549 + 1.0 -0.425 0.328 0.372548 0.627452 + 1.2 -0.514 0.378 0.350053 0.649948 + 1.4 -0.606 0.425 0.328486 0.671514 + 1.6 -0.706 0.472 0.306526 0.693474 + 1.8 -0.796 0.510 0.287965 0.712035 + 2.0 -0.895 0.548 0.268963 0.731037 + 2.2 -0.987 0.581 0.252292 0.747708 + 2.4 -1.084 0.612 0.235822 0.764178 + 2.6 -1.181 0.640 0.220596 0.779404 + 2.8 -1.280 0.667 0.205907 0.794093 + 3.0 -1.376 0.691 0.192655 0.807345 + 3.2 -1.473 0.713 0.180159 0.819841 + 3.4 -1.587 0.737 0.166462 0.833538 + 3.6 -1.678 0.755 0.156274 0.843726 + 3.8 -1.790 0.775 0.144555 0.855445 + 4.0 -1.882 0.790 0.135693 0.864307 + 4.2 -1.992 0.806 0.125660 0.874340 + 4.4 -2.096 0.821 0.116915 0.883085 + 4.6 -2.201 0.834 0.108731 0.891269 + 4.8 -2.301 0.846 0.101475 0.898525 + 5.0 -2.411 0.858 0.094033 0.905967 + 5.2 -2.531 0.869 0.086491 0.913509 + 5.4 -2.608 0.877 0.082028 0.917972 + 5.6 -2.690 0.884 0.077459 0.922540 + 5.8 -2.829 0.895 0.070358 0.929642 + 6.0 -2.939 0.903 0.065182 0.934818 + 6.2 -3.058 0.911 0.060019 0.939981 + 6.4 -3.164 0.917 0.055798 0.944202 + 6.6 -3.212 0.920 0.053958 0.946042 + 6.8 -3.377 0.929 0.048134 0.951866 + 7.0 -3.463 0.933 0.045348 0.954652 + 7.2 -3.550 0.937 0.042692 0.957308 + 7.4 -3.768 0.946 0.036699 0.963301 + 7.6 -3.677 0.942 0.039082 0.960918 + 7.8 -3.975 0.953 0.031791 0.968210 + 8.0 -4.062 0.956 0.029939 0.970061 + 8.2 -4.098 0.957 0.029194 0.970806 + 8.4 -4.186 0.960 0.027462 0.972538 + 8.6 -4.261 0.962 0.026085 0.973915 + 8.8 -4.472 0.967 0.022535 0.977465 + 9.0 -4.621 0.970 0.020321 0.979679 + 9.2 -4.623 0.970 0.020298 0.979702 + 9.4 -4.608 0.970 0.020510 0.979490 + 9.6 -4.822 0.974 0.017676 0.982324 + 9.8 -4.870 0.975 0.017104 0.982896 + 10.0 -4.652 0.971 0.019882 0.980118 + 10.2 -4.954 0.977 0.016131 0.983869 + 10.4 -5.108 0.979 0.014498 0.985502 + 10.6 -5.377 0.983 0.012034 0.987966 + 10.8 -5.544 0.984 0.010717 0.989284 + 11.0 -5.995 0.989 0.007838 0.992162 + 11.2 -5.632 0.985 0.010081 0.989919 + 11.4 -5.826 0.987 0.008812 0.991188 + 11.6 -6.304 0.991 0.006329 0.993671 + 11.8 -6.002 0.989 0.007803 0.992197 + 12.0 -6.559 0.992 0.005301 0.994699 + 12.2 -6.369 0.991 0.006047 0.993953 + 12.4 -6.658 0.993 0.004950 0.995049 + 12.6 -7.016 0.994 0.003864 0.996136 + 12.8 -6.184 0.990 0.006879 0.993121 + 13.0 -7.332 0.996 0.003102 0.996898 + 13.2 -6.534 0.992 0.005394 0.994606 + 13.4 -6.152 0.990 0.007032 0.992968 + 13.6 -6.113 0.990 0.007225 0.992775 + 13.8 -6.288 0.991 0.006400 0.993600 + 14.0 -6.426 0.992 0.005814 0.994186 + 14.2 -6.313 0.991 0.006289 0.993711 + 14.4 -9.966 1.000 0.000000 1.000000 + 14.6 -6.371 0.991 0.006042 0.993958 + 14.8 -9.966 1.000 0.000000 1.000000 + 15.0 -7.055 0.995 0.003759 0.996241 + 15.2 -9.966 1.000 0.000000 1.000000 + 15.4 -6.629 0.993 0.005051 0.994949 + 15.6 -6.313 0.991 0.006289 0.993711 + 15.8 -9.966 1.000 0.000000 1.000000 + 16.0 -5.858 0.988 0.008621 0.991379 + 16.2 -9.966 1.000 0.000000 1.000000 + 16.4 -9.966 1.000 0.000000 1.000000 + 16.6 -9.966 1.000 0.000000 1.000000 + 16.8 -9.966 1.000 0.000000 1.000000 + 17.0 -9.966 1.000 0.000000 1.000000 + 17.2 -9.966 1.000 0.000000 1.000000 + 17.4 -9.966 1.000 0.000000 1.000000 + 17.6 -9.966 1.000 0.000000 1.000000 + 17.8 -9.966 1.000 0.000000 1.000000 + 18.0 -9.966 1.000 0.000000 1.000000 + 18.2 -9.966 1.000 0.000000 1.000000 + 18.4 -9.966 1.000 0.000000 1.000000 + 18.6 -9.966 1.000 0.000000 1.000000 + 18.8 -9.966 1.000 0.000000 1.000000 + 19.0 -9.966 1.000 0.000000 1.000000 + 19.2 -9.966 1.000 0.000000 1.000000 + 19.4 -9.966 1.000 0.000000 1.000000 + 19.6 -9.966 1.000 0.000000 1.000000 + 19.8 -9.966 1.000 0.000000 1.000000 + 20.0 -9.966 1.000 0.000000 1.000000 + 20.2 -9.966 1.000 0.000000 1.000000 + 20.4 -9.966 1.000 0.000000 1.000000 + 20.6 -9.966 1.000 0.000000 1.000000 + 20.8 -9.966 1.000 0.000000 1.000000 + 21.0 -9.966 1.000 0.000000 1.000000 + 21.2 -9.966 1.000 0.000000 1.000000 + 21.4 -9.966 1.000 0.000000 1.000000 + 21.6 -9.966 1.000 0.000000 1.000000 + 21.8 -9.966 1.000 0.000000 1.000000 + 22.0 -9.966 1.000 0.000000 1.000000 + 22.2 -9.966 1.000 0.000000 1.000000 + 22.4 -9.966 1.000 0.000000 1.000000 + 22.6 -9.966 1.000 0.000000 1.000000 + 22.8 -9.966 1.000 0.000000 1.000000 + 23.0 -9.966 1.000 0.000000 1.000000 + 23.2 -9.966 1.000 0.000000 1.000000 + 23.4 -9.966 1.000 0.000000 1.000000 + 23.6 -9.966 1.000 0.000000 1.000000 + 23.8 -9.966 1.000 0.000000 1.000000 + 24.0 -9.966 1.000 0.000000 1.000000 + 24.2 -9.966 1.000 0.000000 1.000000 + 24.4 -9.966 1.000 0.000000 1.000000 + 24.6 -9.966 1.000 0.000000 1.000000 + 24.8 -9.966 1.000 0.000000 1.000000 + 25.0 -9.966 1.000 0.000000 1.000000 + 25.2 -9.966 1.000 0.000000 1.000000 + 25.4 -9.966 1.000 0.000000 1.000000 diff --git a/mainwindow.cpp b/mainwindow.cpp index d1d67f2ab..2df44ab0f 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -1,4 +1,4 @@ -//--------------------------------------------------------------- MainWindow +//---------------------------------------------------------------- MainWindow #include "mainwindow.h" #include "ui_mainwindow.h" #include "devsetup.h"