2009-06-10 16:30:46 +02:00

38 lines
741 B
C

#include "data.h"
word crc_update(char far * data, word size)
{
word i;
word j;
word crc = 0;
for (j = 0; j < size; j++) {
crc = crc ^ ((word) data[j] << 8);
for (i = 0; i < 8; i++) {
if (crc & 0x8000)
crc = (crc << 1) ^ 0x1021;
else
crc <<= 1;
}
}
return crc;
}
word crc_update_mem(unsigned long addr, word size)
{
word i;
word j;
word crc = 0;
for (j = 0; j < size; j++) {
crc = crc ^ ((word) * (byte *) (addr + j) << 8);
for (i = 0; i < 8; i++) {
if (crc & 0x8000)
crc = (crc << 1) ^ 0x1021;
else
crc <<= 1;
}
}
return crc;
}