79 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			79 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | subroutine msksoftsymw(zz,aa,bb,id,nterms,ierror,rxdata,nhard0,nhardsync0) | ||
|  | 
 | ||
|  |   include 'wsprlf_params.f90' | ||
|  | 
 | ||
|  |   complex zz(NS+ND)                     !Complex symbol values (intermediate) | ||
|  |   complex z,z0 | ||
|  |   real rxdata(ND)                       !Soft symbols | ||
|  |   real aa(20),bb(20)                    !Fitted polyco's | ||
|  |   integer id(NS+ND)                     !NRZ values (+/-1) for Sync and Data | ||
|  |   integer ierror(NS+ND) | ||
|  | 
 | ||
|  |   n=0 | ||
|  |   ierror=0 | ||
|  |   ierr=0 | ||
|  |   jz=(NS+ND+1)/2 | ||
|  |   do j=1,jz | ||
|  |      xx=j*2.0/jz - 1.0 | ||
|  |      yii=1. | ||
|  |      yqq=0. | ||
|  |      if(nterms.gt.0) then | ||
|  |         yii=aa(1) | ||
|  |         yqq=bb(1) | ||
|  |         do i=2,nterms | ||
|  |            yii=yii + aa(i)*xx**(i-1) | ||
|  |            yqq=yqq + bb(i)*xx**(i-1) | ||
|  |         enddo | ||
|  |      endif | ||
|  |      z0=cmplx(yii,yqq) | ||
|  |      z=zz(j)*conjg(z0) | ||
|  |      p=real(z) | ||
|  |      if(abs(id(j)).eq.2) then | ||
|  |         if(real(z)*id(j).lt.0) then              !Sync bit | ||
|  |            nhardsync0=nhardsync0+1 | ||
|  |            ierror(j)=2 | ||
|  |         endif | ||
|  |      else | ||
|  |         n=n+1                                    !Data bit | ||
|  |         rxdata(n)=p | ||
|  |         ierr=0 | ||
|  |         if(id(j)*p.lt.0) then | ||
|  |            ierr=1 | ||
|  |            ierror(j)=1 | ||
|  |         endif | ||
|  |         nhard0=nhard0+ierr | ||
|  |      endif | ||
|  | !     write(41,3301) j,id(j),ierror(j),ierr,n,p,p*id(j) | ||
|  | !3301 format(5i6,2f10.3) | ||
|  |   enddo | ||
|  | 
 | ||
|  |   do j=jz+1,NS+ND | ||
|  |      xx=(j-jz+0.5)*2.0/jz - 1.0 | ||
|  |      yii=1. | ||
|  |      yqq=0. | ||
|  |      if(nterms.gt.0) then | ||
|  |         yii=aa(1) | ||
|  |         yqq=bb(1) | ||
|  |         do i=2,nterms | ||
|  |            yii=yii + aa(i)*xx**(i-1) | ||
|  |            yqq=yqq + bb(i)*xx**(i-1) | ||
|  |         enddo | ||
|  |      endif | ||
|  |      z0=cmplx(yii,yqq) | ||
|  |      z=zz(j)*conjg(z0) | ||
|  |      p=aimag(z) | ||
|  |      n=n+1 | ||
|  |      if(n.gt.ND) exit | ||
|  |      rxdata(n)=p | ||
|  |      ierr=0 | ||
|  |      if(id(j)*p.lt.0) then | ||
|  |         ierr=1 | ||
|  |         ierror(j)=1 | ||
|  |      endif | ||
|  |      nhard0=nhard0+ierr | ||
|  | !     write(41,3301) j,id(j),ierror(j),ierr,n,p,p*id(j) | ||
|  |   enddo | ||
|  | 
 | ||
|  |   return | ||
|  | end subroutine msksoftsymw |