38 lines
626 B
C
38 lines
626 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;
|
|
}
|