 |
This algorith does not calculate the CRC32 as defined by CCITT. As I see it the table generation code is wrong - it will only create values with upper nibble = 0 which leads to all CRC's having upper nibble = F which obviously is wrong.
Unfortunately I do not have the code or theory for the table generation but the correct table is
(as defined in assembler where i once implemented it, LONG does put the left byte in highest address, so longs can be read directly)
Crc32_Table: LONG 000h,000h,000h,000h ; 00
LONG 077h,007h,030h,096h
LONG 0eeh,00eh,061h,02ch
LONG 099h,009h,051h,0bah
LONG 007h,06dh,0c4h,019h ; 04
LONG 070h,06ah,0f4h,08fh
LONG 0e9h,063h,0a5h,035h
LONG 09eh,064h,095h,0a3h
LONG 00eh,0dbh,088h,032h ; 08
LONG 079h,0dch,0b8h,0a4h
LONG 0e0h,0d5h,0e9h,01eh
LONG 097h,0d2h,0d9h,088h
LONG 009h,0b6h,04ch,02bh ; 0c
LONG 07eh,0b1h,07ch,0bdh
LONG 0e7h,0b8h,02dh,007h
LONG 090h,0bfh,01dh,091h
LONG 01dh,0b7h,010h,064h ; 10
LONG 06ah,0b0h,020h,0f2h
LONG 0f3h,0b9h,071h,048h
LONG 084h,0beh,041h,0deh
LONG 01ah,0dah,0d4h,07dh ; 14
LONG 06dh,0ddh,0e4h,0ebh
LONG 0f4h,0d4h,0b5h,051h
LONG 083h,0d3h,085h,0c7h
LONG 013h,06ch,098h,056h ; 18
LONG 064h,06bh,0a8h,0c0h
LONG 0fdh,062h,0f9h,07ah
LONG 08ah,065h,0c9h,0ech
LONG 014h,001h,05ch,04fh ; 1c
LONG 063h,006h,06ch,0d9h
LONG 0fah,00fh,03dh,063h
LONG 08dh,008h,00dh,0f5h
LONG 03bh,06eh,020h,0c8h ; 20
LONG 04ch,069h,010h,05eh
LONG 0d5h,060h,041h,0e4h
LONG 0a2h,067h,071h,072h
LONG 03ch,003h,0e4h,0d1h ; 24
LONG 04bh,004h,0d4h,047h
LONG 0d2h,00dh,085h,0fdh
LONG 0a5h,00ah,0b5h,06bh
LONG 035h,0b5h,0a8h,0fah ; 28
LONG 042h,0b2h,098h,06ch
LONG 0dbh,0bbh,0c9h,0d6h
LONG 0ach,0bch,0f9h,040h
LONG 032h,0d8h,06ch,0e3h ; 2c
LONG 045h,0dfh,05ch,075h
LONG 0dch,0d6h,00dh,0cfh
LONG 0abh,0d1h,03dh,059h
LONG 026h,0d9h,030h,0ach ; 30
LONG 051h,0deh,000h,03ah
LONG 0c8h,0d7h,051h,080h
LONG 0bfh,0d0h,061h,016h
LONG 021h,0b4h,0f4h,0b5h ; 34
LONG 056h,0b3h,0c4h,023h
LONG 0cfh,0bah,095h,099h
LONG 0b8h,0bdh,0a5h,00fh
LONG 028h,002h,0b8h,09eh ; 38
LONG 05fh,005h,088h,008h
LONG 0c6h,00ch,0d9h,0b2h
LONG 0b1h,00bh,0e9h,024h
LONG 02fh,06fh,07ch,087h ; 3c
LONG 058h,068h,04ch,011h
LONG 0c1h,061h,01dh,0abh
LONG 0b6h,066h,02dh,03dh
LONG 076h,0dch,041h,090h ; 40
LONG 001h,0dbh,071h,006h
LONG 098h,0d2h,020h,0bch
LONG 0efh,0d5h,010h,02ah
LONG 071h,0b1h,085h,089h ; 44
LONG 006h,0b6h,0b5h,01fh
LONG 09fh,0bfh,0e4h,0a5h
LONG 0e8h,0b8h,0d4h,033h
LONG 078h,007h,0c9h,0a2h ; 48
LONG 00fh,000h,0f9h,034h
LONG 096h,009h,0a8h,08eh
LONG 0e1h,00eh,098h,018h
LONG 07fh,06ah,00dh,0bbh ; 4c
LONG 008h,06dh,03dh,02dh
LONG 091h,064h,06ch,097h
LONG 0e6h,063h,05ch,001h
LONG 06bh,06bh,051h,0f4h ; 50
LONG 01ch,06ch,061h,062h
LONG 085h,065h,030h,0d8h
LONG 0f2h,062h,000h,04eh
LONG 06ch,006h,095h,0edh ; 54
LONG 01bh,001h,0a5h,07bh
LONG 082h,008h,0f4h,0c1h
LONG 0f5h,00fh,0c4h,057h
LONG 065h,0b0h,0d9h,0c6h ; 58
LONG 012h,0b7h,0e9h,050h
LONG 08bh,0beh,0b8h,0eah
LONG 0fch,0b9h,088h,07ch
LONG 062h,0ddh,01dh,0dfh ; 5c
LONG 015h,0dah,02dh,049h
LONG 08ch,0d3h,07ch,0f3h
LONG 0fbh,0d4h,04ch,065h
LONG 04dh,0b2h,061h,058h ; 60
LONG 03ah,0b5h,051h,0ceh
LONG 0a3h,0bch,000h,074h
LONG 0d4h,0bbh,030h,0e2h
LONG 04ah,0dfh,0a5h,041h ; 64
LONG 03dh,0d8h,095h,0d7h
LONG 0a4h,0d1h,0c4h,06dh
LONG 0d3h,0d6h,0f4h,0fbh
LONG 043h,069h,0e9h,06ah ; 68
LONG 034h,06eh,0d9h,0fch
LONG 0adh,067h,088h,046h
LONG 0dah,060h,0b8h,0d0h
LONG 044h,004h,02dh,073h ; 6c
LONG 033h,003h,01dh,0e5h
LONG 0aah,00ah,04ch,05fh
LONG 0ddh,00dh,07ch,0c9h
LONG 050h,005h,071h,03ch ; 70
LONG 027h,002h,041h,0aah
LONG 0beh,00bh,010h,010h
LONG 0c9h,00ch,020h,086h
LONG 057h,068h,0b5h,025h ; 74
LONG 020h,06fh,085h,0b3h
LONG 0b9h,066h,0d4h,009h
LONG 0ceh,061h,0e4h,09fh
LONG 05eh,0deh,0f9h,00eh ; 78
LONG 029h,0d9h,0c9h,098h
LONG 0b0h,0d0h,098h,022h
LONG 0c7h,0d7h,0a8h,0b4h
LONG 059h,0b3h,03dh,017h ; 7c
LONG 02eh,0b4h,00dh,081h
LONG 0b7h,0bdh,05ch,03bh
LONG 0c0h,0bah,06ch,0adh
LONG 0edh,0b8h,083h,020h ; 80
LONG 09ah,0bfh,0b3h,0b6h
LONG 003h,0b6h,0e2h,00ch
LONG 074h,0b1h,0d2h,09ah
LONG 0eah,0d5h,047h,039h ; 84
LONG 09dh,0d2h,077h,0afh
LONG 004h,0dbh,026h,015h
LONG 073h,0dch,016h,083h
LONG 0e3h,063h,00bh,012h ; 88
LONG 094h,064h,03bh,084h
LONG 00dh,06dh,06ah,03eh
LONG 07ah,06ah,05ah,0a8h
LONG 0e4h,00eh,0cfh,00bh ; 8c
LONG 093h,009h,0ffh,09dh
LONG 00ah,000h,0aeh,027h
LONG 07dh,007h,09eh,0b1h
LONG 0f0h,00fh,093h,044h ; 90
LONG 087h,008h,0a3h,0d2h
LONG 01eh,001h,0f2h,068h
LONG 069h,006h,0c2h,0feh
LONG 0f7h,062h,057h,05dh ; 94
LONG 080h,065h,067h,0cbh
LONG 019h,06ch,036h,071h
LONG 06eh,06bh,006h,0e7h
LONG 0feh,0d4h,01bh,076h ; 98
LONG 089h,0d3h,02bh,0e0h
LONG 010h,0dah,07ah,05ah
LONG 067h,0ddh,04ah,0cch
LONG 0f9h,0b9h,0dfh,06fh ; 9c
LONG 08eh,0beh,0efh,0f9h
LONG 017h,0b7h,0beh,043h
LONG 060h,0b0h,08eh,0d5h
LONG 0d6h,0d6h,0a3h,0e8h ; a0
LONG 0a1h,0d1h,093h,07eh
LONG 038h,0d8h,0c2h,0c4h
LONG 04fh,0dfh,0f2h,052h
LONG 0d1h,0bbh,067h,0f1h ; a4
LONG 0a6h,0bch,057h,067h
LONG 03fh,0b5h,006h,0ddh
LONG 048h,0b2h,036h,04bh
LONG 0d8h,00dh,02bh,0dah ; a8
LONG 0afh,00ah,01bh,04ch
LONG 036h,003h,04ah,0f6h
LONG 041h,004h,07ah,060h
LONG 0dfh,060h,0efh,0c3h ; ac
LONG 0a8h,067h,0dfh,055h
LONG 031h,06eh,08eh,0efh
LONG 046h,069h,0beh,079h
LONG 0cbh,061h,0b3h,08ch ; b0
LONG 0bch,066h,083h,01ah
LONG 025h,06fh,0d2h,0a0h
LONG 052h,068h,0e2h,036h
LONG 0cch,00ch,077h,095h ; b4
LONG 0bbh,00bh,047h,003h
LONG 022h,002h,016h,0b9h
LONG 055h,005h,026h,02fh
LONG 0c5h,0bah,03bh,0beh ; b8
LONG 0b2h,0bdh,00bh,028h
LONG 02bh,0b4h,05ah,092h
LONG 05ch,0b3h,06ah,004h
LONG 0c2h,0d7h,0ffh,0a7h ; bc
LONG 0b5h,0d0h,0cfh,031h
LONG 02ch,0d9h,09eh,08bh
LONG 05bh,0deh,0aeh,01dh
LONG 09bh,064h,0c2h,0b0h ; c0
LONG 0ech,063h,0f2h,026h
LONG 075h,06ah,0a3h,09ch
LONG 002h,06dh,093h,00ah
LONG 09ch,009h,006h,0a9h ; c4
LONG 0ebh,00eh,036h,03fh
LONG 072h,007h,067h,085h
LONG 005h,000h,057h,013h
LONG 095h,0bfh,04ah,082h ; c8
LONG 0e2h,0b8h,07ah,014h
LONG 07bh,0b1h,02bh,0aeh
LONG 00ch,0b6h,01bh,038h
LONG 092h,0d2h,08eh,09bh ; cc
LONG 0e5h,0d5h,0beh,00dh
LONG 07ch,0dch,0efh,0b7h
LONG 00bh,0dbh,0dfh,021h
LONG 086h,0d3h,0d2h,0d4h ; d0
LONG 0f1h,0d4h,0e2h,042h
LONG 068h,0ddh,0b3h,0f8h
LONG 01fh,0dah,083h,06eh
LONG 081h,0beh,016h,0cdh ; d4
LONG 0f6h,0b9h,026h,05bh
LONG 06fh,0b0h,077h,0e1h
LONG 018h,0b7h,047h,077h
LONG 088h,008h,05ah,0e6h ; d8
LONG 0ffh,00fh,06ah,070h
LONG 066h,006h,03bh,0cah
LONG 011h,001h,00bh,05ch
LONG 08fh,065h,09eh,0ffh ; dc
LONG 0f8h,062h,0aeh,069h
LONG 061h,06bh,0ffh,0d3h
LONG 016h,06ch,0cfh,045h
LONG 0a0h,00ah,0e2h,078h ; e0
LONG 0d7h,00dh,0d2h,0eeh
LONG 04eh,004h,083h,054h
LONG 039h,003h,0b3h,0c2h
LONG 0a7h,067h,026h,061h ; e4
LONG 0d0h,060h,016h,0f7h
LONG 049h,069h,047h,04dh
LONG 03eh,06eh,077h,0dbh
LONG 0aeh,0d1h,06ah,04ah ; e8
LONG 0d9h,0d6h,05ah,0dch
LONG 040h,0dfh,00bh,066h
LONG 037h,0d8h,03bh,0f0h
LONG 0a9h,0bch,0aeh,053h ; ec
LONG 0deh,0bbh,09eh,0c5h
LONG 047h,0b2h,0cfh,07fh
LONG 030h,0b5h,0ffh,0e9h
LONG 0bdh,0bdh,0f2h,01ch ; f0
LONG 0cah,0bah,0c2h,08ah
LONG 053h,0b3h,093h,030h
LONG 024h,0b4h,0a3h,0a6h
LONG 0bah,0d0h,036h,005h ; f4
LONG 0cdh,0d7h,006h,093h
LONG 054h,0deh,057h,029h
LONG 023h,0d9h,067h,0bfh
LONG 0b3h,066h,07ah,02eh ; f8
LONG 0c4h,061h,04ah,0b8h
LONG 05dh,068h,01bh,002h
LONG 02ah,06fh,02bh,094h
LONG 0b4h,00bh,0beh,037h ; fc
LONG 0c3h,00ch,08eh,0a1h
LONG 05ah,005h,0dfh,01bh
LONG 02dh,002h,0efh,08dh
Regards
Claus
|
|
|
|