mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-28 11:30:25 -04:00 
			
		
		
		
	Decoding via q3list now basically working with grid exchanges.
This commit is contained in:
		
							parent
							
								
									88798f1ca3
								
							
						
					
					
						commit
						d6dd701601
					
				| @ -112,9 +112,12 @@ contains | |||||||
|     nhist2=0 |     nhist2=0 | ||||||
|     if(ncontest.eq.1) then |     if(ncontest.eq.1) then | ||||||
| ! NA VHF Contest or ARRL Digi Contest | ! NA VHF Contest or ARRL Digi Contest | ||||||
|        open(24,file=trim(data_dir)//'/q3list.bin',status='unknown',     & | !       open(24,file=trim(data_dir)//'/q3list.bin',status='unknown',     & | ||||||
|             form='unformatted') | !            form='unformatted') | ||||||
|        read(24,end=2) nhist2,callers(1:nhist2) | !       read(24,end=2) nhist2,callers(1:nhist2) | ||||||
|  |        open(24,file=trim(data_dir)//'/q3list.bin',status='unknown') | ||||||
|  |        read(24,3024,end=2) nhist2,callers(1:nhist2) | ||||||
|  | 3024   format(i5/(a6,2x,a4,2x,i10)) | ||||||
|        now=time() |        now=time() | ||||||
|        do i=1,nhist2 |        do i=1,nhist2 | ||||||
|           hours=(now - callers(i)%nsec)/3600.0 |           hours=(now - callers(i)%nsec)/3600.0 | ||||||
|  | |||||||
| @ -894,12 +894,11 @@ subroutine q65_hist2(msg0,callers,nhist2) | |||||||
|      callers(nhist2)%grid=g4 |      callers(nhist2)%grid=g4 | ||||||
|      callers(nhist2)%nsec=time() |      callers(nhist2)%nsec=time() | ||||||
|      rewind(24) |      rewind(24) | ||||||
|      write(24) nhist2,callers(1:nhist2) |      write(24,3024) nhist2,callers(1:nhist2) | ||||||
|  | 3024 format(i5/(a6,2x,a4,2x,i10)) | ||||||
|      rewind(24) |      rewind(24) | ||||||
|   endif |   endif | ||||||
| 
 | 
 | ||||||
| !  print*,'c',nhist2,trim(msg),' ',c6,' ',g4 |  | ||||||
| 
 |  | ||||||
| 900 return | 900 return | ||||||
| end subroutine q65_hist2 | end subroutine q65_hist2 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -4,9 +4,10 @@ subroutine q65_set_list2(mycall,hiscall,hisgrid,callers,nhist2,codewords,ncw) | |||||||
|   parameter (MAX_NCW=206) |   parameter (MAX_NCW=206) | ||||||
|   parameter (MAX_CALLERS=40)  !For multiple q3 decodes in NA VHf Contest mode |   parameter (MAX_CALLERS=40)  !For multiple q3 decodes in NA VHf Contest mode | ||||||
|   character*12 mycall,hiscall |   character*12 mycall,hiscall | ||||||
|   character*6 hisgrid |   character*6 hisgrid,c6 | ||||||
|  |   character*4 g4 | ||||||
|   character*37 msg,msgsent |   character*37 msg,msgsent | ||||||
|   logical my_std,his_std |   logical std,isgrid | ||||||
|   integer codewords(63,MAX_NCW) |   integer codewords(63,MAX_NCW) | ||||||
|   integer itone(85) |   integer itone(85) | ||||||
|   integer isync(22) |   integer isync(22) | ||||||
| @ -15,59 +16,56 @@ subroutine q65_set_list2(mycall,hiscall,hisgrid,callers,nhist2,codewords,ncw) | |||||||
| 
 | 
 | ||||||
|   data isync/1,9,12,13,15,22,23,26,27,33,35,38,46,50,55,60,62,66,69,74,76,85/ |   data isync/1,9,12,13,15,22,23,26,27,33,35,38,46,50,55,60,62,66,69,74,76,85/ | ||||||
| 
 | 
 | ||||||
| !  print*,'b nhist2:',nhist2 |   isgrid(g4)=g4(1:1).ge.'A' .and. g4(1:1).le.'R' .and. g4(2:2).ge.'A' .and. & | ||||||
|   if(nhist2.ne.-99) return |        g4(2:2).le.'R' .and. g4(3:3).ge.'0' .and. g4(3:3).le.'9' .and.       & | ||||||
|  |        g4(4:4).ge.'0' .and. g4(4:4).le.'9' .and. g4(1:4).ne.'RR73' | ||||||
| 
 | 
 | ||||||
|   ncw=0 |   call stdcall(hiscall,std) | ||||||
|   if(hiscall(1:1).eq. ' ') return |   jmax=nhist2 | ||||||
|   call stdcall(mycall,my_std) |   if(std .and. isgrid(hisgrid(1:4))) then | ||||||
|   call stdcall(hiscall,his_std) |      jmax=nhist2+1 | ||||||
|    |      do j=1,nhist2 | ||||||
|   ncw=MAX_NCW |         if(callers(j)%call .eq. hiscall(1:6)) then | ||||||
|   do i=1,ncw |            jmax=nhist2 | ||||||
|      msg=trim(mycall)//' '//trim(hiscall) |            exit | ||||||
|      if(.not.my_std) then |  | ||||||
|         if(i.eq.1 .or. i.ge.6)  msg='<'//trim(mycall)//'> '//trim(hiscall) |  | ||||||
|         if(i.ge.2 .and. i.le.4) msg=trim(mycall)//' <'//trim(hiscall)//'>' |  | ||||||
|      else if(.not.his_std) then |  | ||||||
|         if(i.le.4 .or. i.eq.6) msg='<'//trim(mycall)//'> '//trim(hiscall) |  | ||||||
|         if(i.ge.7) msg=trim(mycall)//' <'//trim(hiscall)//'>' |  | ||||||
|      endif |  | ||||||
|      j0=len(trim(msg))+2 |  | ||||||
|      if(i.eq.2) msg(j0:j0+2)='RRR' |  | ||||||
|      if(i.eq.3) msg(j0:j0+3)='RR73' |  | ||||||
|      if(i.eq.4) msg(j0:j0+1)='73' |  | ||||||
|      if(i.eq.5) then |  | ||||||
|         if(his_std) msg='CQ '//trim(hiscall)//' '//hisgrid(1:4) |  | ||||||
|         if(.not.his_std) msg='CQ '//trim(hiscall) |  | ||||||
|      endif |  | ||||||
|      if(i.eq.6 .and. his_std) msg(j0:j0+3)=hisgrid(1:4) |  | ||||||
|      if(i.ge.7 .and. i.le.206) then |  | ||||||
|         isnr = -50 + (i-7)/2 |  | ||||||
|         if(iand(i,1).eq.1) then |  | ||||||
|            write(msg(j0:j0+2),'(i3.2)') isnr |  | ||||||
|            if(msg(j0:j0).eq.' ') msg(j0:j0)='+' |  | ||||||
|         else |  | ||||||
|            write(msg(j0:j0+3),'("R",i3.2)') isnr |  | ||||||
|            if(msg(j0+1:j0+1).eq.' ') msg(j0+1:j0+1)='+' |  | ||||||
|         endif |         endif | ||||||
|  |      enddo | ||||||
|   endif |   endif | ||||||
| 
 | 
 | ||||||
|  |   codewords(:,1)=0 | ||||||
|  |   i=1 | ||||||
|  |   do j=1,jmax | ||||||
|  |      c6=callers(j)%call | ||||||
|  |      g4=callers(j)%grid | ||||||
|  |      if(j.eq.nhist2+1) then | ||||||
|  |         c6=hiscall(1:6) | ||||||
|  |         g4=hisgrid(1:4) | ||||||
|  |      endif | ||||||
|  |      do k=1,5 | ||||||
|  |         i=i+1 | ||||||
|  |         msg=trim(mycall)//' '//trim(c6) | ||||||
|  |         j0=len(trim(msg))+1 | ||||||
|  |         if(k.eq.1) msg=msg(1:j0)//g4 | ||||||
|  |         if(k.eq.2) msg=msg(1:j0)//'R '//g4 | ||||||
|  |         if(k.eq.3) msg(j0:j0+3)=' RRR' | ||||||
|  |         if(k.eq.4) msg(j0:j0+4)=' RR73' | ||||||
|  |         if(k.eq.5) msg(j0:j0+2)=' 73' | ||||||
|         call genq65(msg,0,msgsent,itone,i3,n3) |         call genq65(msg,0,msgsent,itone,i3,n3) | ||||||
|         i0=1 |         i0=1 | ||||||
|      j=0 |         jj=0 | ||||||
|      do k=1,85 |         do kk=1,85 | ||||||
|         if(k.eq.isync(i0)) then |            if(kk.eq.isync(i0)) then | ||||||
|               i0=i0+1 |               i0=i0+1 | ||||||
|               cycle |               cycle | ||||||
|            endif |            endif | ||||||
|         j=j+1 |            jj=jj+1 | ||||||
|         codewords(j,i)=itone(k) - 1 |            codewords(jj,i)=itone(kk) - 1 | ||||||
|         enddo |         enddo | ||||||
| !     write(71,3001) i,isnr,codewords(1:13,i),trim(msg) |         write(71,3001) i,j,k,codewords(1:13,i),trim(msg) | ||||||
| !3001 format(i3,2x,i3.2,2x,13i3,2x,a) | 3001    format(3i3,2x,13i3,2x,a) | ||||||
|      enddo |      enddo | ||||||
| !  print*,'aa',ncontest,ncw,1970.0 + time()/(365.25*86400.0) |   enddo | ||||||
|  |   ncw=i | ||||||
| 
 | 
 | ||||||
|   return |   return | ||||||
| end subroutine q65_set_list2 | end subroutine q65_set_list2 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user