home *** CD-ROM | disk | FTP | other *** search
/ back2roots/padua / padua.7z / padua / ftp.vapor.com / microdot-1 / md1_src_02.lzx / crc32.a < prev    next >
Text File  |  1989-08-24  |  4KB  |  115 lines

  1.  
  2.     section    "merged",data
  3.  
  4.     include    'microdot.i'
  5.  
  6.     xdef    _cr3tab
  7. _cr3tab:
  8.     dc.l $00000000,$77073096,$ee0e612c,$990951ba
  9.     dc.l $076dc419,$706af48f,$e963a535,$9e6495a3
  10.     dc.l $0edb8832,$79dcb8a4,$e0d5e91e,$97d2d988
  11.     dc.l $09b64c2b,$7eb17cbd,$e7b82d07,$90bf1d91
  12.     dc.l $1db71064,$6ab020f2,$f3b97148,$84be41de
  13.     dc.l $1adad47d,$6ddde4eb,$f4d4b551,$83d385c7
  14.     dc.l $136c9856,$646ba8c0,$fd62f97a,$8a65c9ec
  15.     dc.l $14015c4f,$63066cd9,$fa0f3d63,$8d080df5
  16.     dc.l $3b6e20c8,$4c69105e,$d56041e4,$a2677172
  17.     dc.l $3c03e4d1,$4b04d447,$d20d85fd,$a50ab56b
  18.     dc.l $35b5a8fa,$42b2986c,$dbbbc9d6,$acbcf940
  19.     dc.l $32d86ce3,$45df5c75,$dcd60dcf,$abd13d59
  20.     dc.l $26d930ac,$51de003a,$c8d75180,$bfd06116
  21.     dc.l $21b4f4b5,$56b3c423,$cfba9599,$b8bda50f
  22.     dc.l $2802b89e,$5f058808,$c60cd9b2,$b10be924
  23.     dc.l $2f6f7c87,$58684c11,$c1611dab,$b6662d3d
  24.     dc.l $76dc4190,$01db7106,$98d220bc,$efd5102a
  25.     dc.l $71b18589,$06b6b51f,$9fbfe4a5,$e8b8d433
  26.     dc.l $7807c9a2,$0f00f934,$9609a88e,$e10e9818
  27.     dc.l $7f6a0dbb,$086d3d2d,$91646c97,$e6635c01
  28.     dc.l $6b6b51f4,$1c6c6162,$856530d8,$f262004e
  29.     dc.l $6c0695ed,$1b01a57b,$8208f4c1,$f50fc457
  30.     dc.l $65b0d9c6,$12b7e950,$8bbeb8ea,$fcb9887c
  31.     dc.l $62dd1ddf,$15da2d49,$8cd37cf3,$fbd44c65
  32.     dc.l $4db26158,$3ab551ce,$a3bc0074,$d4bb30e2
  33.     dc.l $4adfa541,$3dd895d7,$a4d1c46d,$d3d6f4fb
  34.     dc.l $4369e96a,$346ed9fc,$ad678846,$da60b8d0
  35.     dc.l $44042d73,$33031de5,$aa0a4c5f,$dd0d7cc9
  36.     dc.l $5005713c,$270241aa,$be0b1010,$c90c2086
  37.     dc.l $5768b525,$206f85b3,$b966d409,$ce61e49f
  38.     dc.l $5edef90e,$29d9c998,$b0d09822,$c7d7a8b4
  39.     dc.l $59b33d17,$2eb40d81,$b7bd5c3b,$c0ba6cad
  40.     dc.l $edb88320,$9abfb3b6,$03b6e20c,$74b1d29a
  41.     dc.l $ead54739,$9dd277af,$04db2615,$73dc1683
  42.     dc.l $e3630b12,$94643b84,$0d6d6a3e,$7a6a5aa8
  43.     dc.l $e40ecf0b,$9309ff9d,$0a00ae27,$7d079eb1
  44.     dc.l $f00f9344,$8708a3d2,$1e01f268,$6906c2fe
  45.     dc.l $f762575d,$806567cb,$196c3671,$6e6b06e7
  46.     dc.l $fed41b76,$89d32be0,$10da7a5a,$67dd4acc
  47.     dc.l $f9b9df6f,$8ebeeff9,$17b7be43,$60b08ed5
  48.     dc.l $d6d6a3e8,$a1d1937e,$38d8c2c4,$4fdff252
  49.     dc.l $d1bb67f1,$a6bc5767,$3fb506dd,$48b2364b
  50.     dc.l $d80d2bda,$af0a1b4c,$36034af6,$41047a60
  51.     dc.l $df60efc3,$a867df55,$316e8eef,$4669be79
  52.     dc.l $cb61b38c,$bc66831a,$256fd2a0,$5268e236
  53.     dc.l $cc0c7795,$bb0b4703,$220216b9,$5505262f
  54.     dc.l $c5ba3bbe,$b2bd0b28,$2bb45a92,$5cb36a04
  55.     dc.l $c2d7ffa7,$b5d0cf31,$2cd99e8b,$5bdeae1d
  56.     dc.l $9b64c2b0,$ec63f226,$756aa39c,$026d930a
  57.     dc.l $9c0906a9,$eb0e363f,$72076785,$05005713
  58.     dc.l $95bf4a82,$e2b87a14,$7bb12bae,$0cb61b38
  59.     dc.l $92d28e9b,$e5d5be0d,$7cdcefb7,$0bdbdf21
  60.     dc.l $86d3d2d4,$f1d4e242,$68ddb3f8,$1fda836e
  61.     dc.l $81be16cd,$f6b9265b,$6fb077e1,$18b74777
  62.     dc.l $88085ae6,$ff0f6a70,$66063bca,$11010b5c
  63.     dc.l $8f659eff,$f862ae69,$616bffd3,$166ccf45
  64.     dc.l $a00ae278,$d70dd2ee,$4e048354,$3903b3c2
  65.     dc.l $a7672661,$d06016f7,$4969474d,$3e6e77db
  66.     dc.l $aed16a4a,$d9d65adc,$40df0b66,$37d83bf0
  67.     dc.l $a9bcae53,$debb9ec5,$47b2cf7f,$30b5ffe9
  68.     dc.l $bdbdf21c,$cabac28a,$53b39330,$24b4a3a6
  69.     dc.l $bad03605,$cdd70693,$54de5729,$23d967bf
  70.     dc.l $b3667a2e,$c4614ab8,$5d681b02,$2a6f2b94
  71.     dc.l $b40bbe37,$c30c8ea1,$5a05df1b,$2d02ef8d
  72.  
  73.     section    "text",code
  74.     xdef    _crc32
  75.  
  76. _crc32:    ; a0 = ptr, d0 = len
  77.     movem.l    d2/d3,-(sp)
  78.     moveq    #0,d3
  79.     moveq    #-1,d1    ; init crc
  80.     lea    _cr3tab(a4),a1
  81.     bra.s    into
  82. crcloop:
  83.     moveq    #0,d2
  84.     move.b    d1,d2
  85.     move.b    (a0)+,d3
  86.     eor.b    d3,d2
  87.  
  88.     IFND    MDV20
  89.  
  90.     add.w    d2,d2
  91.     add.w    d2,d2
  92.     move.l    0(a1,d2.w),d2
  93.  
  94.     ELSE
  95.  
  96.     move.l    (a1,d2.w*4),d2
  97.  
  98.     ENDC
  99.  
  100.     lsr.l    #8,d1
  101.     eor.l    d1,d2
  102.     move.l    d2,d1
  103. into:
  104.     subq.l    #1,d0
  105.     bpl.s    crcloop
  106.  
  107.     movem.l    (sp)+,d2/d3
  108.     move.l    d1,d0
  109.     rts
  110.  
  111. * #define UPDC32(octet, crc) \
  112. * (crc_32_tab[(unsigned)((((ULONG)crc) ^ ((ULONG)octet)) & $ff)] ^ (((ULONG)crc) >> 8))
  113.  
  114.     end
  115.