кто подскажет процедуру которая считает сабж , но не ограничена 256 байтами как в извесном исходнике ...
кто подскажет процедуру которая считает сабж , но не ограничена 256 байтами как в извесном исходнике ...
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
о нашел и проверил , она правильно расчитывает в формате 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
исходник hrust2.xСообщение от Orionsoft
Для X-modem:Сообщение от Orionsoft
А вообще в своё время в CODE.ZX этот вопрос был рассмотрен, приведено всяческих процедур, и по-моему даже объяснено, что та табличка строится просто через безтабличный алгоритм и может запросто генерироваться динамически, когда нужна скорость и компактность. И даже в моей zxlib есть такой алгоритм:Код: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; } } }
Только вставить мне его не получилось. Сообщение понимаешь-ли длинное. И мучаться в окошке размером в 1/16 монитора тоже удовольствия мало. Поэтому не буду я тут больше ничего осмысленного писать. Только бредить и абастряться. Спрашивай в fido7.zx.spectrum.
Вот от fk0.
axor/Perspective
http://abzac.retropc.ru/
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)