#include <stdio.h>

unsigned char crc[8];

main(argc, argv)
	int argc;
	char *argv[];
{
	register int ic;
	register unsigned char c;
	register int i;
	register unsigned char top;
	long crcsum;
	FILE *f;

	for (i=0; i<8; i++) {
		crc[i] = 0;
	}

	if (argc != 2) {
		fprintf(stdout, "usage: %s filename\n");
		exit( 1 );
	}

	printf("Opening \"%s\".\n", argv[1]);
	f = fopen( argv[1], "r" );
	if (f == NULL) {
		printf("Cannot open!");
		exit( 1 );
	}
	printf("Pcrc working...\n");
	while( (ic=getc(f)) != EOF ) {
		c = ic;
		top = crc[7];
		crc[7] = crc[6] ^ top;
		crc[6] = crc[5] ^ top;
		crc[5] = crc[4];
		crc[4] = crc[3] ^ top;
		crc[3] = crc[2];
		crc[2] = crc[1];
		crc[1] = crc[0] ^ top;
		crc[0] = c      ^ top;
	}

	printf("crc =");
	crcsum = 0;
	for (i=0; i<8; i++) {
		printf(" %d", crc[i]);
		crcsum += crc[i];
	}
	printf(" ; crcsum=%d\n", crcsum);
}
