home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 9 Archive / 09-Archive.zip / zip22.zip / qdos / crc68.s < prev    next >
Text File  |  1996-12-14  |  2KB  |  92 lines

  1. .text
  2.  
  3. .globl  _crc32          ; (ulg val, uch *buf, extent bufsize)
  4. .globl  _get_crc_table  ; ulg *get_crc_table(void)
  5.  
  6. _crc32:
  7.         move.l  8(sp),d0
  8.         bne    valid
  9.         moveq  #0,d0
  10.         rts
  11. valid:  movem.l d2/d3,-(sp)
  12.     jsr     _get_crc_table
  13.         move.l  d0,a0
  14.         move.l  12(sp),d0
  15.         move.l  16(sp),a1
  16.         move.l  20(sp),d1
  17.         not.l   d0
  18.  
  19.         move.l  d1,d2
  20.         lsr.l   #3,d1
  21.         bra     decr8
  22. loop8:  moveq  #0,d3
  23.     move.b (a1)+,d3
  24.     eor.b  d0,d3
  25.     lsl.w  #2,d3
  26.     move.l 0(a0,d3.w),d3
  27.     lsr.l  #8,d0
  28.     eor.l  d3,d0
  29.         moveq  #0,d3
  30.     move.b (a1)+,d3
  31.     eor.b  d0,d3
  32.     lsl.w  #2,d3
  33.     move.l 0(a0,d3.w),d3
  34.     lsr.l  #8,d0
  35.     eor.l  d3,d0
  36.         moveq  #0,d3
  37.     move.b (a1)+,d3
  38.     eor.b  d0,d3
  39.     lsl.w  #2,d3
  40.     move.l 0(a0,d3.w),d3
  41.     lsr.l  #8,d0
  42.     eor.l  d3,d0
  43.         moveq  #0,d3
  44.     move.b (a1)+,d3
  45.     eor.b  d0,d3
  46.     lsl.w  #2,d3
  47.     move.l 0(a0,d3.w),d3
  48.     lsr.l  #8,d0
  49.     eor.l  d3,d0
  50.         moveq  #0,d3
  51.     move.b (a1)+,d3
  52.     eor.b  d0,d3
  53.     lsl.w  #2,d3
  54.     move.l 0(a0,d3.w),d3
  55.     lsr.l  #8,d0
  56.     eor.l  d3,d0
  57.         moveq  #0,d3
  58.     move.b (a1)+,d3
  59.     eor.b  d0,d3
  60.     lsl.w  #2,d3
  61.     move.l 0(a0,d3.w),d3
  62.     lsr.l  #8,d0
  63.     eor.l  d3,d0
  64.         moveq  #0,d3
  65.     move.b (a1)+,d3
  66.     eor.b  d0,d3
  67.     lsl.w  #2,d3
  68.     move.l 0(a0,d3.w),d3
  69.     lsr.l  #8,d0
  70.     eor.l  d3,d0
  71.         moveq  #0,d3
  72.     move.b    (a1)+,d3
  73.     eor.b  d0,d3
  74.     lsl.w  #2,d3
  75.     move.l 0(a0,d3.w),d3
  76.     lsr.l  #8,d0
  77.     eor.l  d3,d0
  78. decr8:  dbra   d1,loop8
  79.     and.w   #7,d2
  80.         bra     decr1
  81. loop1:  moveq  #0,d3
  82.     move.b (a1)+,d3
  83.     eor.b  d0,d3
  84.     lsl.w  #2,d3
  85.     move.l 0(a0,d3.w),d3
  86.     lsr.l  #8,d0
  87.     eor.l  d3,d0
  88. decr1:  dbra   d2,loop1
  89. done:   movem.l (sp)+,d2/d3
  90.         not.l   d0
  91.         rts
  92.