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 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