Currently I am using the Crown Cruncher. The only reason is the decrunching speed, no other cruncher is faster.
Crown suggested first to crunch with "Crown Crunch" and then in a second step with "Crown Imploder". I exactly did that in the past for my demos. I think the Cheese Cruncher does both steps at once, but I don't know exactly. In any case Cheese and Imploder have much longer decrunching times, as they use a more complicated crunching algorythm which leads to shorter files and also to shorter crunching time.
But as long as a crunched SymbOS fits into 64K rom, I will use the Crown Cruncher to have this great decrunching speed during booting.
Btw, as someone on <!-- m --><a class="postlink" href="http://www.MSX.ORG">http://www.MSX.ORG</a><!-- m --> asked for a fast decruncher, I disassembled Crowns routine and posted it there with a few comments. Hope he will not be angry with me Here is the code:
Here is the decruncher (by Crown of BENG! aka Andreas Stefan Winter).
I didn't disassemble the code of the cruncher, but you can download the program here:
http://genesis8.free.fr/frontend/utility/crunch14.zip
The source should just give an idea, if this could be useful for you or not. Unfortunately I don't know anything about the MSX crunchers yet.
di
call #000f ;find out current address (normalley there is always a #c9 at #000f)
dec sp
dec sp
pop hl
ld bc,#c758
add hl,bc
ld e,(hl) ;de=destination address
inc hl
ld d,(hl)
ld bc,#0011
add hl,bc
.l8292 ;main loop
ld a,(hl)
inc hl
ld c,(hl)
cp #ff ;** -1 = end of crunched data
ret z
nop
nop
cp #50
jr nc,l82a6
inc a ;** 0-79 = copy data 1:1 (length=code+1)
ld c,a
ld b,#00
ldir
jr l8292
.l82a6
cp #a0
jr nc,l82b2
sub #4d ;** 80-159 = fill with zeros (length=code-77)
ld c,a
ld b,#00
xor a
jr l8322
.l82b2
cp #f0
jr nc,l82bf
sub #9c ;** 160-239 = fill with the next byte (length=code-156)
ld c,a
ld b,#00
ld a,(hl)
inc hl
jr l8322
.l82bf
cp #fd
jr nz,l82c8
ld b,#00 ;** #fd = copy up to 255 bytes...
inc hl
jr l82cf
.l82c8
cp #fe
jr nz,l82db
inc hl ;** #fe = copy up to 65535 bytes...
ld b,(hl)
inc hl
.l82cf
push de ;** ...from an already decrunched area
ld e,(hl)
inc hl
ld d,(hl)
inc hl
ex (sp),hl
ex de,hl
ldir
pop hl
jr l8292
.l82db
sub #f0
jr nz,l82eb
ld a,(hl) ;** #f0 = copy up to 255 new bytes
inc hl
add #51
ld c,a
ld b,#00
jr nc,l82f1
inc b
jr l82f1
.l82eb
dec a
jr nz,l82f5
inc hl ;** #f1 = copy up to 65535 new bytes
ld b,(hl)
inc hl
.l82f1
ldir
.l82f3
jr l8292
.l82f5
dec a
jr nz,l8300
xor a ;** others = different fill methodes
push af
ld a,(hl)
inc hl
add #53
jr l8313
.l8300
dec a
jr nz,l8309
inc hl
ld b,(hl)
inc hl
xor a
jr l8322
.l8309
dec a
jr nz,l831c
ld a,(hl)
inc hl
push af
ld a,(hl)
inc hl
add #54
.l8313
ld c,a
ld b,#00
jr nc,l8319
inc b
.l8319
pop af
jr l8322
.l831c
ld a,(hl)
inc hl
ld c,(hl)
inc hl
ld b,(hl)
inc hl
.l8322 ;** repeat the same value x times
push hl
dec bc
ld h,d
ld l,e
inc de
ld (hl),a
ldir
pop hl
jr l82f3
Alles anzeigen
CU,
Prodatron