home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol210 / crc68k.lbr / CRCASM.S < prev    next >
Text File  |  1986-02-09  |  896b  |  46 lines

  1. * Assembly support for CRC calculation
  2. *
  3. * Based on algorithm used in R. Conn's CRC.MAC
  4. * Why this differs from his SYSLIB routine I do not know.
  5. * This allows calculation of same values as the CP/M-80 
  6. * programs CRC and CRCK.  Different from algorithm used in
  7. * XMODEM programs.
  8. *
  9. * July, 4, 1984
  10. * Christopher Rhodes
  11. * Labradorian Labs
  12.  
  13.     .globl    _clrcrc        * clear CRC counter
  14.     .globl    _addcrc            * add byte to CRC counter
  15.     .globl    _getcrc         * return final CRC value
  16.         
  17.     .data
  18.  
  19. _clrcrc:
  20.     clr.w    CRCVAL        * clear CRC counter
  21.     rts
  22.  
  23. _addcrc:
  24.     move.b    5(a7),d0    * get data byte off C stack
  25.     move.w    CRCVAL,d1          * get old value
  26.     add.w    d1,d1
  27.     add.b    d0,d1
  28.     btst    #7,CRCVAL
  29.     beq    skip
  30.     eori.w    #$A097,d1
  31. skip:
  32.     move.w    d1,CRCVAL
  33.     rts
  34.  
  35. _getcrc:
  36.     move.w    CRCVAL,d0
  37.     rts
  38.  
  39.     .bss
  40. CRCVAL:        .ds.w    1    * storage for CRC value
  41.  
  42.     .end
  43.  
  44. :
  45.     move.w    d1,CRCVAL
  46.     rts