1;=========================================================================== 2; Copyright (c) 1990-2000 Info-ZIP. All rights reserved. 3; 4; See the accompanying file LICENSE, version 2000-Apr-09 or later 5; (the contents of which are also included in zip.h) for terms of use. 6; If, for some reason, all these files are missing, the Info-ZIP license 7; also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html 8;=========================================================================== 9.text 10 11.globl _crc32 ; (ulg val, uch *buf, extent bufsize) 12.globl _get_crc_table ; ulg *get_crc_table(void) 13 14_crc32: 15 move.l 8(sp),d0 16 bne valid 17 moveq #0,d0 18 rts 19valid: movem.l d2/d3,-(sp) 20 jsr _get_crc_table 21 move.l d0,a0 22 move.l 12(sp),d0 23 move.l 16(sp),a1 24 move.l 20(sp),d1 25 not.l d0 26 27 move.l d1,d2 28 lsr.l #3,d1 29 bra decr8 30loop8: moveq #0,d3 31 move.b (a1)+,d3 32 eor.b d0,d3 33 lsl.w #2,d3 34 move.l 0(a0,d3.w),d3 35 lsr.l #8,d0 36 eor.l d3,d0 37 moveq #0,d3 38 move.b (a1)+,d3 39 eor.b d0,d3 40 lsl.w #2,d3 41 move.l 0(a0,d3.w),d3 42 lsr.l #8,d0 43 eor.l d3,d0 44 moveq #0,d3 45 move.b (a1)+,d3 46 eor.b d0,d3 47 lsl.w #2,d3 48 move.l 0(a0,d3.w),d3 49 lsr.l #8,d0 50 eor.l d3,d0 51 moveq #0,d3 52 move.b (a1)+,d3 53 eor.b d0,d3 54 lsl.w #2,d3 55 move.l 0(a0,d3.w),d3 56 lsr.l #8,d0 57 eor.l d3,d0 58 moveq #0,d3 59 move.b (a1)+,d3 60 eor.b d0,d3 61 lsl.w #2,d3 62 move.l 0(a0,d3.w),d3 63 lsr.l #8,d0 64 eor.l d3,d0 65 moveq #0,d3 66 move.b (a1)+,d3 67 eor.b d0,d3 68 lsl.w #2,d3 69 move.l 0(a0,d3.w),d3 70 lsr.l #8,d0 71 eor.l d3,d0 72 moveq #0,d3 73 move.b (a1)+,d3 74 eor.b d0,d3 75 lsl.w #2,d3 76 move.l 0(a0,d3.w),d3 77 lsr.l #8,d0 78 eor.l d3,d0 79 moveq #0,d3 80 move.b (a1)+,d3 81 eor.b d0,d3 82 lsl.w #2,d3 83 move.l 0(a0,d3.w),d3 84 lsr.l #8,d0 85 eor.l d3,d0 86decr8: dbra d1,loop8 87 and.w #7,d2 88 bra decr1 89loop1: moveq #0,d3 90 move.b (a1)+,d3 91 eor.b d0,d3 92 lsl.w #2,d3 93 move.l 0(a0,d3.w),d3 94 lsr.l #8,d0 95 eor.l d3,d0 96decr1: dbra d2,loop1 97done: movem.l (sp)+,d2/d3 98 not.l d0 99 rts 100