File: jt65code.f90

package info (click to toggle)
wsjtx 2.6.1%2Brepack-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 69,664 kB
  • sloc: cpp: 86,977; f90: 42,417; python: 27,241; ansic: 12,510; fortran: 2,382; makefile: 197; sh: 134
file content (47 lines) | stat: -rwxr-xr-x 1,574 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
program JT65code

! Provides examples of message packing, bit and symbol ordering,
! Reed Solomon encoding, and other necessary details of the JT65
! protocol.

  character*22 msg0,msg,decoded,cok*3
  integer dgen(12),sent(63),recd(12),era(51)

  nargs=iargc()
  if(nargs.ne.1) then
     print*,'Usage: JT65code "message"'
     go to 999
  endif

  call getarg(1,msg0)                     !Get message from command line
  msg=msg0

  call chkmsg(msg,cok,nspecial,flip)      !See if it includes "OOO" report
  if(nspecial.gt.0) then                  !or is a shorthand message
     write(*,1010) 
1010 format('Shorthand message.')
     go to 999
  endif

  call packmsg(msg,dgen)                  !Pack message into 72 bits
  write(*,1020) msg0
1020 format('Message:   ',a22)            !Echo input message
  if(iand(dgen(10),8).ne.0) write(*,1030) !Is plain text bit set?
1030 format('Plain text.')         
  write(*,1040) dgen
1040 format('Packed message, 6-bit symbols: ',12i3) !Display packed symbols

  call rs_encode(dgen,sent)               !RS encode
  call interleave63(sent,1)               !Interleave channel symbols
  call graycode(sent,63,1)                !Apply Gray code
  write(*,1050) sent
1050 format('Channel symbols, including FEC:'/(i5,20i3))

  call graycode(sent,63,-1)
  call interleave63(sent,-1)
  call rs_decode(sent,era,0,recd,nerr)
  call unpackmsg(recd,decoded)            !Unpack the user message
  write(*,1060) decoded,cok
1060 format('Decoded message: ',a22,2x,a3)

999 end program JT65code