;DeCruncher for StoneCracker v2.99 ;© 1991 Mr.Spiv of Cave destination= $28000 j: lea $dff180,a6 lea data(pc),a3 lea 12(a3),a5 lea destination,a0 move.l a0,a4 add.l 8(a3),a5 add.l 4(a3),a0 moveq #127,d3 moveq #0,d4 moveq #3,d5 moveq #7,d6 move.b 3(a3),d4 move.l -(a5),d7 deloop: moveq #0,d2 lsr.l #1,d7 bne.s not_empty0 move.l -(a5),d7 roxr.l #1,d7 not_empty0: bcc.s copydata bytekpl: move d5,d1 bsr.s getbits add.l d0,d2 cmp d6,d0 beq.s bytekpl byteloop: move d6,d1 bytebits: lsr.l #1,d7 bne.s not_empty2 move.l -(a5),d7 roxr.l #1,d7 not_empty2: roxr.b #1,d0 dbf d1,bytebits move.b d0,-(a0) subq.l #1,d2 bne.s byteloop bra.s test copydata: moveq #2-1,d1 bsr.s getfast moveq #0,d1 move.l d0,d2 move.b 0(a3,d0.w),d1 cmp d5,d0 bne.s copyfast lsr.l #1,d7 bne.s not_empty3 move.l -(a5),d7 roxr.l #1,d7 not_empty3: bcs.s copykpl copykpl127: move d6,d1 bsr.s getbits add.l d0,d2 cmp d3,d0 beq.s copykpl127 add.l d6,d2 add.l d6,d2 bra.s copyskip copykpl: move d5,d1 bsr.s getbits add.l d0,d2 cmp d6,d0 beq.s copykpl copyskip: move d4,d1 copyfast: addq.l #1,d2 bsr.s getfast copyloop: move.b 0(a0,d0.w),-(a0) subq.l #1,d2 bpl.s copyloop test: cmp.l a0,a4 blo.s deloop rts getbits: subq #1,d1 getfast: moveq #0,d0 bitloop: lsr.l #1,d7 bne.s not_empty1 move.l -(a5),d7 move d7,(a6) roxr.l #1,d7 not_empty1: addx.l d0,d0 dbf d1,bitloop rts ;------ crunched datafile data: