1 {CRC24 table calculation     (C) 2006 W.Ehrhardt}
2 
3 program T_CTab24;
4 
5 {$i STD.INC}
6 
7 {$ifdef APPCONS}
8   {$apptype console}
9 {$endif}
10 
11 
12 uses
13   mem_util;
14 
15 const
16   CRC24_POLY = $1864cfb;
17 
18 {---------------------------------------------------------------------------}
19 procedure CalcTable;
20   {-Calclate and output CRC24 table}
21 var
22   CTab: array[0..255] of longint;
23   i,b: integer;
24   crc: longint;
25 begin
26   for i:=0 to 255 do begin
27     crc:= longint(i) shl 16;
28     for b:=1 to 8 do begin
29       crc := crc shl 1;
30       if crc and $1000000 <> 0 then crc := crc xor CRC24_POLY;
31     end;
32     CTab[i] := crc;
33   end;
34   writeln('const');
35   writeln('  CT24: array[0..255] of longint = (');
36   for i:=0 to 255 do begin
37     if i and 7 = 0 then write('':4);
38     write('$',HexLong(CTab[i]));
39     if i=255 then writeln
40     else begin
41       write(',');
42       if i and 7 = 7 then writeln
43     end;
44   end;
45   writeln('  );')
46 end;
47 
48 begin
49   writeln('T_CTab24 - CRC24 table calculation     (C) 2006 W.Ehrhardt');
50   writeln;
51   CalcTable;
52 end.
53