home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / ZCPR33 / S-Z / SLB36HLP.LBR / SYSLIBG.HZP / SYSLIBG.HLP
Text File  |  2000-06-30  |  3KB  |  89 lines

  1. :CRC Routines
  2.  
  3.      Thσá CR├ Routine≤ ma∙ bσ useΣ t∩ checδ thσ validit∙á oµ ì
  4. aεá incominτ seria∞ bytσ streaφ oµ arbitrar∙ length«á  Thesσ ì
  5. routine≤á computσ anΣ checδ ß truσ 16-bi⌠ Cycliπá Redundanc∙ ì
  6. Codσ (CRC).
  7.  
  8.      The use of these routines will guarantee detection of:
  9.           1) all single- and double-bit errors
  10.           2) all errors with an odd number of error bits
  11.           3) all burst errors of length 16 or less
  12.  
  13.      Additionally, the following statistics:
  14.           1) 99.9969% of all 17-bit error bursts
  15.           2) 99.9984% of all possible longer error bursts
  16.  
  17.      Thσ followinτ screeε displa∙ illustrate≤ ß typica∞á wa∙ ì
  18. t∩ usσ thesσ routines:
  19.  
  20.      CRC$MAKE:                ; ROUTINE TO ESTABLISH OUTGOING CRC VALUE
  21.           CALL CRCCLR    ; CLEAR CRC
  22.           <loop CALLing CRCUPD>    ; ACQUIRE VALUES
  23.           CALL CRCDONE   ; GET VALUE
  24.           SHLD CRCVAL    ; SAVE VALUE
  25.      CRC$CHECK:          ; ROUTINE TO CHECK INCOMING CRC VALUE
  26.           CALL CRCCLR    ; CLEAR CRC
  27.           <loop CALLing CRCUPD>    ; ACQUIRE VALUES
  28.           CALL CRCDONE   ; GET VALUE
  29.           XCHG           ; VALUE IN DE
  30.           LHLD CRCVAL    ; GET FIRST VALUE IN HL
  31.           CALL COMPHD    ; COMPARE HL TO DE
  32.           JNZ  ERROR     ; CRC'S DON'T MATCH IF NOT EQUAL
  33.  
  34.      Thσáá followinτáá screeεá display≤á describσá thσáá CR├ ì
  35. routines«áá  Thσáá CRC- routine≤á usσá thσáá X^16+X^12+X^5+▒ ì
  36. polynomial¼áá thσá CRC1- routine≤á usσá thσá X^16+X^15+X^2+▒ ì
  37. polynomial¼áááá anΣáááá thσááá CRC2-routine≤áááá usσáááá thσ ì
  38. X^16+X^15+X^13+X^7+X^4+X^2+X+▒ polynomial.
  39.      Routine:  CRCCLR, CRC1CLR, CRC2CLR
  40.  
  41.      Function:
  42.  
  43.      Clea≥á thσá interna∞ CR├ Accumulato≥ iε preparatioεá t∩ ì
  44. CR├ computation.
  45.  
  46.      Inputs:  None
  47.  
  48.      Outputs:  None
  49.  
  50.      Registers Affected:  None
  51.  
  52.      SYSLIB Routines Called:  None
  53.  
  54.      Special Error Conditions:  None
  55.  
  56.  
  57.      Routine:  CRCUPD, CRC1UPD, CRC2UPD
  58.  
  59.      Function:á  Updatσá thσ CR├ Accumulato≥ valuσ witΦá thσ ì
  60. nex⌠ byte.
  61.  
  62.      Inputs:  A=byte to be included in CRC
  63.  
  64.      Outputs:  None
  65.  
  66.      Registers Affected:  None
  67.  
  68.      SYSLIB Routines Called:  None
  69.  
  70.      Special Error Conditions:  None
  71.  
  72.      Routine:  CRCDONE, CRC1DONE, CRC2DONE
  73.  
  74.      Function:
  75.  
  76.      Terminatσáá CR├á valuσá accumulatioεá anΣá returεáá thσ ì
  77. calculateΣ 16-bi⌠ CR├ value.
  78.  
  79.      Inputs:  None
  80.  
  81.      Outputs:  HL = calculated CRC value
  82.  
  83.      Registers Affected:  HL
  84.  
  85.      SYSLIB Routines Called:  None
  86.  
  87.      Special Error Conditions:  None
  88.  
  89.