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

  1. {*********************************************************
  2.   File       : DEMO2.PAS
  3.   Vers.      : 1.0
  4.   Last Edit  : 16.11.88
  5.   Autor      : G. Born
  6.   Files      : ---
  7.   Progr. Spr.: Turbo Pascal 4.0 / 5.0
  8.   Betr. Sys. : DOS 2.1 - 3.3
  9.   Funktion: Das Programm dient zur Demonstration der CRC -
  10.             Berechnung per Software. Die zu übertragenden
  11.             Zeichen stehen als Bytes im Feld buff[]. Aus
  12.             diesen Zeichen wird dann die CRC16 - Summe über
  13.             die Pascal Procedur CRC mit einer "Lock Up Table"
  14.             berechnet.
  15. **********************************************************}
  16.  
  17. TYPE Buffer = Array [1 .. 255] OF Byte;
  18.  
  19. VAR crc_res : Word;                          { CRC Register }
  20.     buff : Buffer;                           { Datenpuffer  }
  21.  
  22. {*************       Hilfroutinen **************}
  23.  
  24. {$I CRCF.PAS}      { CRC Berechnungsroutine in Pascal        }
  25.  
  26. procedure Write_hex (value, len : integer);
  27.  {
  28.    Ausgabe eines Wertes als Zahl auf dem Bildschirm.
  29.    Durch Len wird festgelegt, ob ein Byte (Len = 1)
  30.    oder Wort (Len = 2) ausgegeben werden soll.
  31.   }
  32.  const Hexzif : array [0..15] of char = '0123456789ABCDEF';
  33.        Byte_len = 1;
  34.        Word_len = 2;
  35.  
  36.  TYPE zahl = 1..2;
  37.  VAR temp : integer;
  38.     carry : zahl;
  39.      i    : zahl;
  40.  begin
  41.   if len = Word_len then
  42.    begin
  43.     temp := swap (value) and $0FF;      { high byte holen     }
  44.     write (Hexzif[temp div 16]:1,Hexzif[temp mod 16]:1);
  45.    end;
  46.   temp := value and $0FF;               { low byte holen      }
  47.   write (Hexzif[temp div 16]:1,Hexzif[temp mod 16]:1);
  48. end;  { Write_hex }
  49.  
  50.  
  51. {****** Hauptprogramm mit Testrumpf *******}
  52.  
  53. begin
  54.  
  55.  crc_res := 0;                          { clear CRC - Register }
  56.  buff[1] := $55;                        { Testcode setzen      }
  57.  buff[2] := $88;
  58.  buff[3] := $CC;
  59.  
  60.  writeln ('CRC - Demo Programm 2 (c) Born G.');
  61.  writeln;
  62.  
  63.  writeln ('CRC - Berechnung über Lock Up Table');
  64.  writeln;
  65.  
  66.  CRC (crc_res, buff, 3);                { Aufruf CRC Routine 1 }
  67.  
  68.  write ('Die CRC - Summe ist : ');
  69.  write_hex (crc_res,2);                 { Hexzahl ausgeben     }
  70.  writeln;
  71.  writeln;
  72.  
  73. end.                                    { Ende                 }
  74.  
  75.