2020-10-26 16:54:05 -04:00
|
|
|
program q65_ftn_test
|
|
|
|
|
|
|
|
use packjt77
|
2020-10-27 15:45:34 -04:00
|
|
|
parameter (LL=192,NN=63)
|
2020-10-26 16:54:05 -04:00
|
|
|
integer x(13) !User's 78-bit message as 13 six-bit integers
|
|
|
|
integer y(63) !Q65 codeword for x
|
|
|
|
integer xdec(13) !Decoded message
|
|
|
|
integer APmask(13)
|
|
|
|
integer APsymbols(13)
|
|
|
|
real s3(0:LL-1,NN)
|
|
|
|
real s3prob(0:LL-1,NN)
|
|
|
|
character*37 msg0,msg,msgsent
|
|
|
|
character*77 c77
|
|
|
|
logical unpk77_success
|
|
|
|
|
|
|
|
narg=iargc()
|
|
|
|
if(narg.ne.1) then
|
|
|
|
print*,'Usage: q65_ftn_test "message"'
|
|
|
|
print*,'Example: q65_ftn_test "K1ABC W9XYZ EN37"'
|
|
|
|
go to 999
|
|
|
|
endif
|
|
|
|
call getarg(1,msg0)
|
|
|
|
call pack77(msg0,i3,n3,c77)
|
|
|
|
call unpack77(c77,0,msgsent,unpk77_success) !Unpack to get msgsent
|
|
|
|
read(c77,1000) x
|
|
|
|
1000 format(12b6.6,b5.5)
|
|
|
|
|
2020-10-26 19:25:16 -04:00
|
|
|
call q65_enc(x,y) !Encode message, x(1:13) ==> y(1:63)
|
2020-10-26 16:54:05 -04:00
|
|
|
|
|
|
|
write(*,1010) x,msg0
|
|
|
|
1010 format('User message:'/13i3,2x,a)
|
|
|
|
write(*,1020) y
|
|
|
|
1020 format(/'Generated codeword:'/(20i3))
|
|
|
|
|
|
|
|
s3=0.
|
|
|
|
s3prob=0.
|
|
|
|
do j=1,NN
|
2020-10-27 15:45:34 -04:00
|
|
|
s3(y(j)+64,j)=1.0
|
2020-10-26 16:54:05 -04:00
|
|
|
enddo
|
|
|
|
APmask=0
|
|
|
|
APsymbols=0
|
2020-10-27 15:45:34 -04:00
|
|
|
nsubmode=0
|
|
|
|
b90=1.0
|
|
|
|
nFadingModel=1
|
|
|
|
call q65_dec(s3,APmask,APsymbols,nsubmode,b90,nFadingModel,s3prob,snr2500,xdec,irc)
|
2020-10-26 16:54:05 -04:00
|
|
|
write(c77,1000) xdec
|
|
|
|
call unpack77(c77,0,msg,unpk77_success) !Unpack to get msgsent
|
|
|
|
write(*,1100) xdec,trim(msg)
|
|
|
|
1100 format(/'Decoded message:'/13i3,2x,a)
|
|
|
|
|
|
|
|
999 end program q65_ftn_test
|