
Сообщение от
Orionsoft
кто подскажет процедуру которая считает сабж , но не ограничена 256 байтами как в извесном исходнике ...
Для X-modem:
Код:
crc=0;
for (i=0; i<block_size; i++) {
if (ptr >= sizeof(buff)) {
debug0("buffer overflow!\n");
send_break("buffer overflow!");
return 0;
}
while (1) {
CHECK_TIMEOUT;
if (kbhit()) {
buff[ptr+i] = c = getch();
crc^=((unsigned)c<<8)&0xff00;
b=8;
do {
if (crc&0x8000) crc<<=1, crc^=0x1021;
else crc<<=1;
} while (--b!=0);
break;
}
}
}
А вообще в своё время в CODE.ZX этот вопрос был рассмотрен, приведено всяческих процедур, и по-моему даже объяснено, что та табличка строится просто через безтабличный алгоритм и может запросто генерироваться динамически, когда нужна скорость и компактность. И даже в моей zxlib есть такой алгоритм:
Только вставить мне его не получилось. Сообщение понимаешь-ли длинное. И мучаться в окошке размером в 1/16 монитора тоже удовольствия мало. Поэтому не буду я тут больше ничего осмысленного писать. Только бредить и абастряться. Спрашивай в fido7.zx.spectrum.