28 lines
		
	
	
		
			769 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			28 lines
		
	
	
		
			769 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | subroutine chkcrc10(decoded,nbadcrc) | ||
|  | 
 | ||
|  |   use crc | ||
|  |   integer*1 decoded(60) | ||
|  |   integer*1, target:: i1Dec8BitBytes(9) | ||
|  | 
 | ||
|  | ! Check the CRC | ||
|  |   do ibyte=1,6 | ||
|  |      itmp=0 | ||
|  |      do ibit=1,8 | ||
|  |         itmp=ishft(itmp,1)+iand(1,decoded((ibyte-1)*8+ibit)) | ||
|  |      enddo | ||
|  |      i1Dec8BitBytes(ibyte)=itmp | ||
|  |   enddo | ||
|  |   i1Dec8BitBytes(7)=decoded(49)*128+decoded(50)*64 | ||
|  | 
 | ||
|  | ! Pack received CRC into bytes 8 and 9 for crc10_check | ||
|  |   i1Dec8BitBytes(8)=decoded(51)*2+decoded(52) | ||
|  |   i1Dec8BitBytes(9)=decoded(53)*128 + decoded(54)*64+decoded(55)*32 +   & | ||
|  |        decoded(56)*16 | ||
|  |   i1Dec8BitBytes(9)=i1Dec8BitBytes(9) + decoded(57)*8+decoded(58)*4 +   & | ||
|  |        decoded(59)*2+decoded(60)*1 | ||
|  |   nbadcrc=1 | ||
|  |   if(crc10_check(c_loc(i1Dec8BitBytes),9)) nbadcrc=0 | ||
|  | 
 | ||
|  |   return | ||
|  | end subroutine chkcrc10 |