                        PDCRC 2.10
               
This is a set of Public Domain CRC routines.  I couldn't find a set 
of no-holds-barred Public Domain CRC routines, so when I did a subject 
called Graph Theory and Coding at Uni, I decided to carry on past the 
theory and write something useful.

These routines are designed to be object-oriented, as efficient as any
other implementation, and totally portable (to any compiler which conforms
to ISO/IEC 9899:1990 at any rate).

The package includes the following:

read.me      - This file
pdpgoal.txt  - Goals of the Public Domain Project
crc.txt      - A tutorial on the theory behind CRCs

crcxmgen.c   - Program to generate an xmodem CRC table
crcxm.h      - Routines used to handle xmodem CRCs (ie, the guts)
crcxmtst.c   - A test driver for xmodem CRCs

crc16gen.c   - Program to generate a CRC-16 table
crc16.h      - Routines used to handle CRC-16s (ie, the guts)
crc16tst.c   - A test driver for CRC-16s.

crcitgen.c   - Program to generate CCITT CRC table
crcit.h      - Routines used to handle CCITT CRCs (ie, the guts)
crcittst.c   - A test driver for CCITT CRCs

crc32gen.c   - Program to generate IEEE 802 CRC-32 table
crc32.h      - Routines used to handle IEEE 802 CRC-32s (ie the guts)
crc32tst.c   - A test driver for IEEE 802 CRC-32s

crcfile.exe  - MSDOS executable to calculate CRC of a file
crcfile.c    - source code to crcfile.exe

simpcrc.slt  - Xmodem CRC using Telix SALT language


If you are implementing a new function, the "proper, standard" ones
to use are CRC-32 (preferably), otherwise CCITT CRC.  However, NOTE!
The CCITT-16 I am suspicious of.  I am basically suspicious of the
source that I used to get the test data from to confirm that it
was working.  The CRC-XM and CRC-32 have been tested in real life
applications (zmodem) but the others haven't.  If someone has some
guaranteed data, preferably with a link to the CCITT (ITU-T)
standard, that would help.


The author (Paul Edwards) can be contacted at kerravon@w3.to.


History:
1993-07-22 - Version 1.00, including crcxm, crc16 and crcit.
1993-07-24 - Version 1.10, including crcxm, crc16, crcit, crc32 and
             documentation on crcs.  Also updated the existing .h files
             to include protection from multiple inclusion.
1995-03-15 - Version 1.50, made the routines conform to a slightly
             more object-oriented interface.
1995-12-29 - Version 2.0.  Included a program to calculate the CRC
             of a file.
2002-07-29 - Version 2.1. Included simpcrc.slt and CCITT warning.
