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

  1. {*********************************************************
  2.   File       : DEMO3.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 Assembler Procedur CRC berechnet.
  14. **********************************************************}
  15.  
  16. TYPE Buffer = Array [1 .. 255] OF Byte;
  17.  
  18. VAR crc_res : Word;                          { CRC Register }
  19.     buff : Buffer;                           { Datenpuffer  }
  20.  
  21. {*************       Hilfroutinen **************}
  22.  
  23. {$L CRCA.OBJ}                                { OBJ. File    }
  24. {$F+}
  25. procedure CRC (var crc_res : word; var buff : Buffer; len : integer); external;
  26. {$F-}
  27.  
  28. procedure Write_hex (value, len : integer);
  29.  {
  30.    Ausgabe eines Wertes als Zahl auf dem Bildschirm.
  31.    Durch Len wird festgelegt, ob ein Byte (Len = 1)
  32.    oder Wort (Len = 2) ausgegeben werden soll.
  33.   }
  34.  const Hexzif : array [0..15] of char = '0123456789ABCDEF';
  35.        Byte_len = 1;
  36.        Word_len = 2;
  37.  
  38.  TYPE zahl = 1..2;
  39.  VAR temp : integer;
  40.     carry : zahl;
  41.      i    : zahl;
  42.  begin
  43.   if len = Word_len then
  44.    begin
  45.     temp := swap (value) and $0FF;      { high byte holen     }
  46.     write (Hexzif[temp div 16]:1,Hexzif[temp mod 16]:1);
  47.    end;
  48.   temp := value and $0FF;               { low byte holen      }
  49.   write (Hexzif[temp div 16]:1,Hexzif[temp mod 16]:1);
  50. end;  { Write_hex }
  51.  
  52. {**** hauptprogramm ****}
  53.  
  54. begin
  55.  
  56.  crc_res := 0;                          { clear CRC - Register }
  57.  buff[1] := $55;                        { Testcode setzen      }
  58.  buff[2] := $88;
  59.  buff[3] := $CC;
  60.  
  61.  writeln ('CRC - Demo Programm 3 (c) Born G.');
  62.  writeln;
  63.  
  64.  writeln ('CRC - Berechnung über Assemblermodul mit Polynomdivision');
  65.  writeln;
  66.  
  67.  CRC (crc_res, buff, 3);                { Aufruf CRC Routine 1 }
  68.  write ('Die CRC - Summe ist : ');
  69.  write_hex (crc_res,2);                 { Hexzahl ausgeben     }
  70.  writeln;
  71.  writeln;
  72.  
  73. end.                                    { Ende                 }
  74.