home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Crawly Crypt Collection 2
/
crawlyvol2.bin
/
utility
/
archiver
/
imploder
/
explode.s
next >
Wrap
Text File
|
1994-10-12
|
3KB
|
174 lines
**********************************************************************
* Data Exploder a0 = Source/Dest Buffer (must be size of dest!)
* Resource by GROO 1990
**********************************************************************
Explode_Data movem.l d0-d5/a0-a4,-(sp)
move.l a0,a3
move.l a0,a4
cmp.l #"IMP!",(a0)+
bne.s NotImplDataErr
add.l (a0)+,a4
add.l (a0)+,a3
move.l a3,a2
move.l (a2)+,-(a0)
move.l (a2)+,-(a0)
move.l (a2)+,-(a0)
move.l (a2)+,d2
move.w (a2)+,d3
bmi.s .1
subq.l #1,a3
.1 lea -$001C(sp),sp
move.l sp,a1
moveq.l #6,d0
.2 move.l (a2)+,(a1)+
dbra d0,.2
move.l sp,a1
moveq.l #0,d4
Expl1 tst.l d2
beq.s .3
.4 move.b -(a3),-(a4)
subq.l #1,d2
bne.s .4
.3 cmp.l a4,a0
bcs.s Expl2
lea $001C(sp),sp
moveq.l #-1,d0
cmp.l a3,a0
beq.s Expl_Exit
NotImplDataErr moveq.l #0,d0
Expl_Exit movem.l (sp)+,d0-d5/a0-a4
rts ; d0 = 0 = error
Expl2 add.b d3,d3
bne.s .1
move.b -(a3),d3
addx.b d3,d3
.1 bcc.s Expl3
add.b d3,d3
bne.s .2
move.b -(a3),d3
addx.b d3,d3
.2 bcc.s Expl4
add.b d3,d3
bne.s .3
move.b -(a3),d3
addx.b d3,d3
.3 bcc.s Expl5
add.b d3,d3
bne.s .4
move.b -(a3),d3
addx.b d3,d3
.4 bcc.s Expl6
add.b d3,d3
bne.s .5
move.b -(a3),d3
addx.b d3,d3
.5 bcc.s .6
move.b -(a3),d4
moveq.l #3,d0
bra.s Expl7
.6 add.b d3,d3
bne.s .7
move.b -(a3),d3
addx.b d3,d3
.7 addx.b d4,d4
add.b d3,d3
bne.s .8
move.b -(a3),d3
addx.b d3,d3
.8 addx.b d4,d4
add.b d3,d3
bne.s .9
move.b -(a3),d3
addx.b d3,d3
.9 addx.b d4,d4
addq.b #6,d4
moveq.l #3,d0
bra.s Expl7
Expl6 moveq.l #5,d4
moveq.l #3,d0
bra.s Expl7
Expl5 moveq.l #4,d4
moveq.l #2,d0
bra.s Expl7
Expl4 moveq.l #3,d4
moveq.l #1,d0
bra.s Expl7
Expl3 moveq.l #2,d4
moveq.l #0,d0
Expl7 moveq.l #0,d5
move.w d0,d1
add.b d3,d3
bne.s .1
move.b -(a3),d3
addx.b d3,d3
.1 bcc.s .4
add.b d3,d3
bne.s .2
move.b -(a3),d3
addx.b d3,d3
.2 bcc.s .3
move.b Expl_Tab1(pc,d0.w),d5
addq.b #8,d0
bra.s .4
.3 moveq.l #2,d5
addq.b #4,d0
.4 move.b Expl_Tab2(pc,d0.w),d0
.5 add.b d3,d3
bne.s .6
move.b -(a3),d3
addx.b d3,d3
.6 addx.w d2,d2
subq.b #1,d0
bne.s .5
add.w d5,d2
moveq.l #0,d5
move.l d5,a2
move.w d1,d0
add.b d3,d3
bne.s .7
move.b -(a3),d3
addx.b d3,d3
.7 bcc.s Expl9
add.w d1,d1
add.b d3,d3
bne.s .8
move.b -(a3),d3
addx.b d3,d3
.8 bcc.s Expl8
move.w 8(a1,d1.w),a2
addq.b #8,d0
bra.s Expl9
Expl8 move.w 0(a1,d1.w),a2
addq.b #4,d0
Expl9 move.b $0010(a1,d0.w),d0
.1 add.b d3,d3
bne.s .2
move.b -(a3),d3
addx.b d3,d3
.2 addx.l d5,d5
subq.b #1,d0
bne.s .1
addq.w #1,a2
add.l d5,a2
add.l a4,a2
.3 move.b -(a2),-(a4)
subq.b #1,d4
bne.s .3
bra Expl1
Expl_Tab1 dc.l $060A0A12
Expl_Tab2 dc.l $01010101
dc.l $02030304
dc.l $0405070E
; =========================================================================