
Сообщение от
CityAceE
boo_boo, я брал эту процедуру в готовм виде из ZX-Ревю. Так что предложить что-то другое не могу. Но точно знаю, что
elf/2 разобрлася с процедурой и перевёл её на ПЦ для поддержки в своём плагине для FAR. Может быть он поделится своим наработками?

Код:
WORD crc(BYTE* ptr, WORD len)
{
WORD crc = 0;
for(; len; len--)
{
BYTE tmp = crc ^ *ptr++;
WORD bCRC = 0;
for(int i = 0; i < 8; ++i)
{
WORD lBit = bCRC & 1;
bCRC >>= 1; bCRC |= lBit<<15; // RRA crc
if((tmp & 1) ^ lBit) bCRC ^= 0xA001;
tmp >>= 1;
}
crc = bCRC ^ (crc<<8 | crc>>8);
}
return (crc<<8 | crc>>8);
}
WORD Manager::calcDScrc(void)
{
return crc(zeroTrk+9*sectorSize+2, 256+9+11*noFolders);
}
вот как-то так