diff --git a/lib/ft8/chkcrc12a.f90 b/lib/ft8/chkcrc12a.f90 index fc42919..e994650 100644 --- a/lib/ft8/chkcrc12a.f90 +++ b/lib/ft8/chkcrc12a.f90 @@ -16,6 +16,7 @@ subroutine chkcrc12a(decoded,nbadcrc) i1Dec8BitBytes(10)=iand(i1Dec8BitBytes(10),128+64+32) i1Dec8BitBytes(11)=0 icrc12=crc12(c_loc(i1Dec8BitBytes),11) !CRC12 computed from 75 msg bits + icrc12=xor(icrc12, 42) nbadcrc=1 if(ncrc12.eq.icrc12) nbadcrc=0 diff --git a/lib/ft8/extractmessage174.f90 b/lib/ft8/extractmessage174.f90 index e7c7c3a..3734377 100644 --- a/lib/ft8/extractmessage174.f90 +++ b/lib/ft8/extractmessage174.f90 @@ -20,6 +20,7 @@ subroutine extractmessage174(decoded,msgreceived,ncrcflag) i1Dec8BitBytes(10)=iand(i1Dec8BitBytes(10),128+64+32) i1Dec8BitBytes(11)=0 icrc12=crc12(c_loc(i1Dec8BitBytes),11) !CRC12 computed from 75 msg bits + icrc12=xor(icrc12, 42) if(ncrc12.eq.icrc12 .or. sum(decoded(57:87)).eq.0) then !### Kludge ### ! CRC12 checks out --- unpack 72-bit message diff --git a/lib/ft8/foxgen.f90 b/lib/ft8/foxgen.f90 index b122096..e3b2e17 100644 --- a/lib/ft8/foxgen.f90 +++ b/lib/ft8/foxgen.f90 @@ -73,6 +73,7 @@ subroutine foxgen() read(cb88,1003) i1Msg8BitBytes(1:11) 1003 format(11b8) icrc12=crc12(c_loc(i1Msg8BitBytes),11) + icrc12=xor(icrc12, 42) write(cbits,1001) msgbits(1:56),icrc10,nrpt,i3b,icrc12 read(cbits,1002) msgbits diff --git a/lib/ft8/genft8.f90 b/lib/ft8/genft8.f90 index dcb249d..4d01267 100644 --- a/lib/ft8/genft8.f90 +++ b/lib/ft8/genft8.f90 @@ -26,6 +26,7 @@ subroutine genft8(msg,mygrid,bcontest,i3bit,msgsent,msgbits,itone) i1Msg8BitBytes(10)=iand(i1Msg8BitBytes(10),128+64+32) i1Msg8BitBytes(11)=0 icrc12=crc12(c_loc(i1Msg8BitBytes),11) + icrc12=xor(icrc12, 42) ! For reference, here's how to check the CRC ! i1Msg8BitBytes(10)=icrc12/256 diff --git a/lib/ft8/ldpcsim174.f90 b/lib/ft8/ldpcsim174.f90 index 08b181e..a6ff941 100644 --- a/lib/ft8/ldpcsim174.f90 +++ b/lib/ft8/ldpcsim174.f90 @@ -91,6 +91,7 @@ allocate ( rxdata(N), llr(N) ) i1Msg8BitBytes(10:11)=0 checksum = crc12 (c_loc (i1Msg8BitBytes), 11) + checksum = xor(checksum, 42) ! For reference, the next 3 lines show how to check the CRC i1Msg8BitBytes(10)=checksum/256 i1Msg8BitBytes(11)=iand (checksum,255)