home *** CD-ROM | disk | FTP | other *** search
/ CBM Funet Archive / cbm-funet-archive-2003.iso / cbm / crossplatform / converters / unix / pcrc.c < prev    next >
C/C++ Source or Header  |  1992-04-21  |  863b  |  53 lines

  1. #INCLUDE <STDIO.H>
  2.  
  3. UNSIGNED CHAR CRC[8];
  4.  
  5. MAIN(ARGC, ARGV)
  6. INT ARGC;
  7. CHAR *ARGV[];
  8. {$7b}
  9. REGISTER INT IC;
  10. REGISTER UNSIGNED CHAR C;
  11. REGISTER INT I;
  12. REGISTER UNSIGNED CHAR TOP;
  13. LONG CRCSUM;
  14. file *F;
  15.  
  16. FOR (I=0; I<8; I++) {$7b}
  17. CRC[I] = 0;
  18. {$7d}
  19.  
  20. IF (ARGC != 2) {$7b}
  21. FPRINTF(STDOUT, "USAGE: %S FILENAME\N");
  22. EXIT( 1 );
  23. {$7d}
  24.  
  25. PRINTF("oPENING \"%S\".\N", ARGV[1]);
  26. F = FOPEN( ARGV[1], "R" );
  27. IF (F == null) {$7b}
  28. PRINTF("cANNOT OPEN!");
  29. EXIT( 1 );
  30. {$7d}
  31. PRINTF("pCRC WORKING...\N");
  32. WHILE( (IC=GETC(F)) != eof ) {$7b}
  33. C = IC;
  34. TOP = CRC[7];
  35. CRC[7] = CRC[6] ^ TOP;
  36. CRC[6] = CRC[5] ^ TOP;
  37. CRC[5] = CRC[4];
  38. CRC[4] = CRC[3] ^ TOP;
  39. CRC[3] = CRC[2];
  40. CRC[2] = CRC[1];
  41. CRC[1] = CRC[0] ^ TOP;
  42. CRC[0] = C      ^ TOP;
  43. {$7d}
  44.  
  45. PRINTF("CRC =");
  46. CRCSUM = 0;
  47. FOR (I=0; I<8; I++) {$7b}
  48. PRINTF(" %D", CRC[I]);
  49. CRCSUM += CRC[I];
  50. {$7d}
  51. PRINTF(" ; CRCSUM=%D\N", CRCSUM);
  52. {$7d}
  53.