ZXNet эхоконференция «code.zx»


тема: CRC-16 bit



от: Kirill Frolov
кому: All
дата: 03 Dec 2006
Hello, Orionsoft

Ori> кто подскажет процедуру которая считает сабж , но не ограничена 256
Ori> байтами как в извесном исходнике ...

Для X-modem;
┌─-; code ───

crc=0;
for (i=0; i if (ptr >= sizeof(buff)) {
debug0("buffer overflow!
");
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 ───
А вообще в своё время в CODE.ZX этот вопрос был рассмотрен, приведено
всяческих процедур, и по-моему даже объяснено, что та табличка строится просто
через безтабличный алгоритм и может запросто генерироваться динамически, когда
нужна скорость и компактность. И даже в моей zxlib есть такой алгоритм:

Только вставить мне его не получилось. Сообщение понимаешь-ли длинное. И
мучаться в окошке размером в 1/16 монитора тоже удовольствия мало. Поэтому не
буду я тут больше ничего осмысленного писать. Только бредить и абастряться.
Спрашивай в fido7.zx.spectrum.

от: Orionsoft
кому: All
дата: 03 Dec 2006
Hello, All

кто подскажет процедуру которая считает сабж , но не ограничена 256 байтами как
в извесном исходнике ...

от: Orionsoft
кому: All
дата: 03 Dec 2006
Hello, Orionsoft

о нашел и проверил , она правильно расчитывает в формате cciit


CRC16;
;Borrowed; from http://zilog.sh.cvut.cz/~base/misc/z80bits.html
; and moddified to be a loop
;The arrow comments show what lines I added or commented out from the original.
;Inputs; de->data; bc=number of bytes
;Outputs; hl=CRC16;
push bc ;<---<<<
push de ;<---<<<
push af ;<---<<<
ld hl,$FFFF
push bc ;<---<<<
CRC16_Read;
ld; a,(de)
inc de
xor h
ld h,a
ld b,8
CRC16_CrcByte;
add; hl,hl
jr nc,CRC16_Next
ld a,h
xor $10
ld h,a
ld a,l
xor $21
ld l,a
CRC16_Next;
djnz; CRC16_CrcByte
; dec c ;>>>--->
pop bc ;<---<<<
dec bc ;<---<<<
push bc ;<---<<<
ld a,b ;<---<<<
or c ;<---<<<
jr nz,CRC16_Read
pop bc ;<---<<<
pop af ;<---<<<
pop de ;<---<<<
pop bc ;<---<<<
ret

от: Марк Антонов
кому: All
дата: 03 Dec 2006
Hello, Orionsoft

Ori> кто подскажет процедуру которая считает сабж , но не ограничена 256
Ori> байтами как в извесном исходнике ...

исходник hrust2.x

от: Александр Шушков
кому: All
дата: 15 Dec 2006
Hello, fk0

Вот от fk0.

Файл: zxlib_crc_fk0.zip http://zx.pk.ru/attachment.php?attachmentid=4300




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Новости - Новости от FLASH на 08.06.97 года.
Hackers - парочка программ для Вас.
Системки - NedoLang: ускорение (часть 5).

В этот день...   25 февраля