BBS: Inland Empire Archive Date: 02-11-93 (18:10) Number: 361 From: DICK DENNISON Refer#: NONE To: VICTOR YIU Recvd: NO Subj: Re: CRC-16 and CRC-32 Conf: (2) Quik_Bas
VY> Can anyone tell me how to modify Rich's QBCRC10 CRC-32 maker to ma VY> 16-bit CRCs? I already have the CRC-32 code, so reposting it is unnec VY> Thanks! 'From Donn Bly: DECLARE FUNCTION Computecrc& (x$) 'OPEN "ccit.bas" FOR OUTPUT AS 1 CLS FOR x = 0 TO 255 crc& = Computecrc&(CHR$(x)) PRINT HEX$(crc&), NEXT FUNCTION Computecrc& (x$) ' ComputeCRC - Copyright (C) 1989, Donn Bly, 1:236/7.0 ' ' Standard Donn Bly Licencing Agreement: ' This code may be used for anything that you want, except for profit. I f ' you want to profit from my work you had better talk to me first. ' NOTE: The CRC Polynomial was redone by Dick Dennison for CCIT16 STATIC InputByte AS INTEGER, CRCword AS LONG, c%, FeedBackBit AS INTEGER ' ' CRC Calculation Polynomial = X^16+X^12+X^5+X^0 (CCIT 16) ' ' X$ is the block on which to compute the CRC ' CRCword = 0 'this line is Dick's FOR c% = 1 TO LEN(x$) InputByte = ASC(MID$(x$, c%, 1)) FeedBackBit = ((CRCword AND 32768) = 32768) XOR ((InputByte AND 128) = 128) CRCword = ((CRCword AND 32767&) * 2&) IF FeedBackBit THEN CRCword = CRCword XOR &H1021& FeedBackBit = ((CRCword AND 32768) = 32768) XOR ((InputByte AND 64) = 6 4) CRCword = ((CRCword AND 32767&) * 2&) IF FeedBackBit THEN CRCword = CRCword XOR &H1021& FeedBackBit = ((CRCword AND 32768) = 32768) XOR ((InputByte AND 32) = 3 2) CRCword = ((CRCword AND 32767&) * 2&) IF FeedBackBit THEN CRCword = CRCword XOR &H1021& FeedBackBit = ((CRCword AND 32768) = 32768) XOR ((InputByte AND 16) = 1 6) CRCword = ((CRCword AND 32767&) * 2&) IF FeedBackBit THEN CRCword = CRCword XOR &H1021& FeedBackBit = ((CRCword AND 32768) = 32768) XOR ((InputByte AND 8) = 8) CRCword = ((CRCword AND 32767&) * 2&) IF FeedBackBit THEN CRCword = CRCword XOR &H1021& FeedBackBit = ((CRCword AND 32768) = 32768) XOR ((InputByte AND 4) = 4) CRCword = ((CRCword AND 32767&) * 2&) IF FeedBackBit THEN CRCword = CRCword XOR &H1021& FeedBackBit = ((CRCword AND 32768) = 32768) XOR ((InputByte AND 2) = 2) CRCword = ((CRCword AND 32767&) * 2&) IF FeedBackBit THEN CRCword = CRCword XOR &H1021& FeedBackBit = ((CRCword AND 32768) = 32768) XOR ((InputByte AND 1) = 1) CRCword = ((CRCword AND 32767&) * 2&) IF FeedBackBit THEN CRCword = CRCword XOR &H1021& NEXT c% Computecrc& = CRCword& END FUNCTION 'Sorry about the wrap. This is for CCIT16 (the xmodem type). --- VP [DOS] V4.09e * Origin: The MailMan (914)374-3903 NY Quick Share Pt #7 *HST (1:272/34)
Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET