34 lines
		
	
	
		
			800 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			34 lines
		
	
	
		
			800 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | subroutine encode232(dat,nsym,symbol) | ||
|  | 
 | ||
|  | ! Convolutional encoder for a K=32, r=1/2 code. | ||
|  | 
 | ||
|  |   integer*1 dat(13)                 !User data, packed 8 bits per byte | ||
|  |   integer*1 symbol(206)             !Channel symbols, one bit per byte | ||
|  |   integer*1 i1 | ||
|  |   include 'conv232.f90' | ||
|  | 
 | ||
|  |   nstate=0 | ||
|  |   k=0 | ||
|  |   do j=1,nsym | ||
|  |      do i=7,0,-1 | ||
|  |         i1=dat(j) | ||
|  |         i4=i1 | ||
|  |         if (i4.lt.0) i4=i4+256 | ||
|  |         nstate=ior(ishft(nstate,1),iand(ishft(i4,-i),1)) | ||
|  |         n=iand(nstate,npoly1) | ||
|  |         n=ieor(n,ishft(n,-16)) | ||
|  |         k=k+1 | ||
|  |         symbol(k)=partab(iand(ieor(n,ishft(n,-8)),255)) | ||
|  |         n=iand(nstate,npoly2) | ||
|  |         n=ieor(n,ishft(n,-16)) | ||
|  |         k=k+1 | ||
|  |         symbol(k)=partab(iand(ieor(n,ishft(n,-8)),255)) | ||
|  |         if(k.ge.nsym) go to 100 | ||
|  |      enddo | ||
|  |   enddo | ||
|  | 
 | ||
|  | 100 continue | ||
|  | 
 | ||
|  |   return | ||
|  | end subroutine encode232 |