Preview
Original $00000 of $00000 - Crunched $00000
con:100/16/430/174/STONE CRACKER v3.00
-=> STONE CRACKER v3.00 - Private <=-
(c) 1991 by Mr.Spiv of Cave
Type '*q' anytime to exit
or '*h' for quick help.
Select defaults with enter.
Are you kidding? You better play only games.
Locate your program here.
Def: Fix address (if you have used fixing)
Atleast the size of your program (in kilobytes).
Search equalities within this area.
Def: 2 (=2048 bytes)
After decrunching jump here.
Def: Start address
Def: Y=yes
After decrunching locate SSP here.
After decrunching locate USP here.
N=normal decrunher and K=kill system decrunher
which turns of Amiga's OS.
Def: N=normal
Define all bits of SR like condition codes,
interrupt mask, state etc.
Def: $2700
Define interrupt enable bits.
Def: $7fff
Define audio,disk,control bits.
Def: $7fff
Define Dma enable bits.
Def: $7fff
Locate decruncher here before decrunching. No
stacks used while decrunching. memory needed
#244 ($f4) bytes.
Def: $100
Save again? If so we return to 'Save executable or
data' question.
Def: Y=yes
Save crunched file as executable program or as
data (without decruncher).
Def: E=executable
Confirm values you gave for decruncher.
Def: Y=yes
It's possible to save decruncher source code
for Stc v3.00 algorithm.
Def: N=no
Don't care. Just press enter.
Def: #126 bytes
Normal executable programs can be fixed into
absolute address.
Def: No fixing
To prevent uncrunched data overlap sourcedata.
Should be a bit lower than Start address.
Def: Start address
Start memory address: $
Buffer size (Kb): #
File to load:
Efficiency (0->5)
0=#512 bytes
1=#1024 bytes
>2=#2048 bytes
3=#4096 bytes
4=#8192 bytes
5=#16384 bytes
:
Jump address: $
File to save:
Crunch more? (Y/n):
Supervisor stack (SSP): $
User stack (USP): $
Decruncher type (N/k)
n=normal decruncher
k=kill system decruncher
:
Status register (SR): $
Int ena ($dff09a): $
Adk con ($dff09e): $
Dma con ($dff096): $
Decruncher address: $
Save again? (Y/n):
Save Executable or Data? (E/d):
Values ok? (Y/n):
Save decruncher source code? (y/N):
Max equal lenght (bytes): #
File seems to be relocatible!
Fix address: $
Low memory address: $
Error while loading the file!
Error while saving the file!
Not enough memory for the buffer!
Get a memory expansion!!
You must be kidding!
File too big for the buffer!
Crunching failed or aborted!!
Can't perform the relocation! Buffer too small!
Can't relocate! Unknown hunk type!
bytes
kilobytes
File lenght: # Crunched lenght: # Bytes won: # Maximum buffer size: # Relocation completed!
Finish all disk activity because the
system will be shut during crunching!
Press <enter> to continue.
Both mousebuttons to abort crunching!
Mr.Spiv/CAVE
S300
dest= $40000
j lea dest,a4
lea source,a3
cmp.l #"S300",(a3)
bne error
lea $dff180,a2
lea 16(a3),a5
move.l a4,a0
add.l 8(a3),a0
add.l 12(a3),a5
moveq #127,d3
moveq #0,d4
moveq #3,d5
moveq #7,d6
move.b 7(a3),d4
lea stc14(pc),a1
move.l -(a5),d7
stc1 lsr.l #1,d7
bne.s stc2
move.l -(a5),d7
roxr.l #1,d7
stc2 bcc.s stc7
moveq #1,d2
stc3 moveq #2,d1
jsr (a1)
add.l d0,d2
cmp d6,d0
beq.s stc3
stc4 moveq #7,d1
stc5 lsr.l #1,d7
bne.s stc6
move.l -(a5),d7
move d7,(a2)
roxr.l #1,d7
stc6 roxr.b #1,d0
dbf d1,stc5
move.b d0,-(a0)
subq.l #1,d2
bne.s stc4
bra.s stc13
stc7 moveq #1,d1
jsr (a1)
moveq #0,d1
move.l d0,d2
move.b 4(a3,d0.w),d1
cmp d5,d0
bne.s stc11
lsr.l #1,d7
bne.s stc8
move.l -(a5),d7
roxr.l #1,d7
stc8 bcs.s stc10
stc9 moveq #6,d1
jsr (a1)
add.l d0,d2
cmp d3,d0
beq.s stc9
move d4,d1
bra.s stc11
stc10 moveq #2,d1
jsr (a1)
add.l d0,d2
cmp d6,d0
beq.s stc10
moveq #7,d1
stc11 addq.l #1,d2
jsr (a1)
stc12 move.b (a0,d0.w),-(a0)
subq.l #1,d2
bpl.s stc12
stc13 cmp.l a0,a4
blo.s stc1
error rts
stc14 moveq #0,d0
stc15 lsr.l #1,d7
bne.s stc16
move.l -(a5),d7
move d7,(a2)
roxr.l #1,d7
stc16 addx.l d0,d0
dbf d1,stc15
rts
source ;incbin data