home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 9 Archive / 09-Archive.zip / unzip532.zip / qdos / crc68.s < prev    next >
Text File  |  1996-07-05  |  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.