home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 10 / crc.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1988-11-16  |  1.4 KB  |  43 lines

  1. procedure CRC (var CRCreg : Word; var Buff : Buffer; Count : Integer);
  2. {------------------------------------------------------------
  3.   File       : CRC.PAS  Vers. 1.0
  4.   Last Edit  : 16.10.88
  5.   Autor      : (c) G. Born
  6.   Progr. Spr.: Turbo Pascal 4.0 / 5.0
  7.  
  8.   Hilfprogramm zur Berechnung der CRC - Summe in Turbo Pascal.
  9.   Es wird das Polynom y = x^16 + x^15 + x^2 + 1 verwendet
  10.   Der Aufruf der Routine erfolgt mit:
  11.  
  12.    CRC (CRCreg, Buff, Count)
  13.  
  14.    CRCreg = Word mit dem CRC Ergebnis
  15.    Buff   = Feld mit den Ausgabebytes
  16.    Count  = Integer * 2 Variable mit der Zahl der Zeichen
  17.  
  18.   Die Berechnung erfolgt über successive Polynomdivision.
  19. ------------------------------------------------------------}
  20. CONST Poly = $A001;                    { Generator - Polynom  }
  21.  
  22. VAR i,j : Integer;
  23.     bytes : Byte;
  24.     carry : Byte;
  25. begin
  26.  
  27.  for i := 1 TO Count do                     { lese alle Zeichen }
  28.   begin
  29.    bytes := Buff[i];                        { hole Zeichen      }
  30.    for j := 1 TO 8 do                       { bearbeite 8 Bit   }
  31.     begin
  32.      carry := (CRCreg XOR bytes) AND 1;     { XOR low Bit       }
  33.      bytes := bytes div 2;                  { shift right       }
  34.      CRCreg := CRCreg div 2;                { schiebe rechts    }
  35.  
  36.      IF carry = 1 THEN                      { Übertrag ?        }
  37.       CRCreg := CRCreg XOR poly;            { xor Polynom       }
  38.     end;
  39.    end;
  40.  
  41. end;{ crc }
  42.  
  43.