Oe p ` @ ` @GET_IT!!TXT P!ICE_2_1 PRG KICE_DISKS B VICE_README H _ICE_UNP2S EvICE_UNPAS @POCZYTAJTRB !B "u~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~ ,=) IOOX;,) ,O#=I###+L#i8##;,) ,Diz,C00l,soft,iZ,,,OI,I###::Xi8##=ITi,,,+)ITi:,If,Yo,wanT,to, , fRom, +:,I###:,;:8##TL##T,)##iI#X:,contact,me, ,asss/TrB,I###:,,,8##;+##X,8##+i##=,call n0W, ,c00lection!!!,I###:,,,8##;+##X,###i===:,(0-42)13-75-13, ,I###:,,,8##;+##X,8##=, Lodz City!!, ,gtxTO:Vat>Ph0ner>Kroll,,:L###=,,;###=)##X:=8#8)IL:, ,Grey>Wachu>Uras,,,+i:,+iii=i+,:iii+, ,GSL>Andymaniac...,7 ,):,,;+,! iTTTIITT);, ;ITTT)TTI+,:O##T,;8#I,=), :8##L:L##8:, )###+i###;,I##T,,IL+,;X#X,, ,8##L,i###:,;IHTLi,,i###++###+,=TLLT;,I##T,IHHT,:)HIHT+,=THH)LHT::T##8):;ITII), ,8##H;O#8),;8#O,8#I,i###=T#8I,I##ii#8;I##T,i##O,i##;X##;,8##I)##L,+##X,,8#I,TT, ,8##XO#8T:,I##L=X#O,i###)T#XL:8##i)##iI##T,=##O,:IL=X##+,8##++##8,+##X,:###XI;, ,8##L+###H,T##L;,i###+,X##I8##=;;;:I##T,=##O,=X#IX##+,8##++##8,+##X,,T#X, ,8##L,8###:)##X,,,:,i###+,X##TX##),,::I##T,=##O,X##+X##+,8##++##8,+##8,:X+T8##, i###X;i###T:T##OLL=:H###TL##O:;X##LLL;H##X:T##8;L##XH##H+8##II##8+:8##L+#O+T#L, ;+;,;i)+:,:+++,,:+:,;++:,:+:+:,++:,++:;+;,;++;,;+++;,, ,O (c)ign asss/tH RblatS thE LAST 0nE Atari madafakas in Lodz City, ~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~ f``XA special hello goes to those guys who prefer using this packer. (You know who you are).*O*m - ЭЭ// ?<?<JNA 3 b.3 0aa Daa ` < a&3"~R@gNu> <a ??<LNAHABBBP (pf|A"0<NBp0:LNu""HABXBBP/JXf@`@H1@H@@H1@1zA"psNBp0:LNu""""xafx3$AaJy$gA2a@0 3fa6`Aaba:F 1gv gp 2fFJy$gAXa@l|ngpy` A-aa3 3 j gZ ygP nf3`4 3` j`8By&Jy$gA_a*|g`A aa<yf3&v36Jy$g?<NATIa:BgHT?<GNAPJf|\*.*BaI8 |g0|g.A DaA aa ng`A gaaNu?<Hz?<=NAPJk3DNuHP/?:?<?NA Nu?<Hz?<NAXkNu?<NATNu?<NATNu/< NMXNu/?< NA\NuHz ?<&NN\Nu 8#8#<L|Pz@DADBDCDQ3QPQ3(NuAa`(Byha z :"z E. f.%߇`>.-%Wއ`,އgNu> f.%߇Nu.-%WއNurއgAQNuCtaTxr1 Hka1 AgCrtaTr1 HaBq `rptadpt@aBC@!!Q`    H Ice!fd K.l,H(Na#j#NqNq a#r ad*><|8$zD@DADBDCQQHQLNu801 Enter name of source file: Enter name of destination file: Could not allocate enough memory Working: P> Crunch another file (Y/n): Relocate program after depacking (Y/n): Additional picture compression (N/y): Please enter the offset (Default: $0): $ 1) Crunch data file (Default) 2) Crunch executable file Choose:No mem! Verify: OK! Error! [cancelled] Data cannot be packed! [cancelled]DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCRemaining: 99%DDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCC-DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCTime:  Rate: % [saving]  was pressed. File is skipped. Larger than original! [cancelled]Ef ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ | Version 2.11 <| { P A C K - I C E } | K| { This packer was written by Axe of Delight. } | First version: 14.02.1990 Final changes: 17.06.1990 | { K} ~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ [0][| What do you wish to pack? | - Data files | - Executable files | - Set Parameters ][ DATA | EXEC | SETUP ][0][| Relocate after decrunch? | ][ YES | NO ][2][| Do you wish to pack | another file?|][ YES | NO | ??? ][0][| Do you wish to use an | additional algorithm | for picture compression? |][ NO | YES ]$ZR.,,R 4  :6x b0v22  TL vbegin: lea stackend,sp move.l sp,d0 subi.l #begin-$0120,d0 move.l d0,-(sp) pea begin-$0100(pc) clr.w -(sp) move.w #$4a,-(sp) trap #1 adda.w #$0c,sp bsr.s ice3_04 move.l $84.w,ice3_08+2 move.l #ice3_06,$84.w bsr.s ice3_05 pea ice3_02(pc) pea ice3_02(pc) pea filename(pc) clr.w -(sp) move.w #$4b,-(sp) trap #1 lea 16(sp),sp bsr.s ice3_04 move.l ice3_08+2(pc),$84.w bsr.s ice3_05 clr.w -(sp) trap #1 ice3_02:dc.l 0 filename: dc.b 'resource.del',0 even ice3_04:clr.l -(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp move.l d0,d7 rts ice3_05:move.l d7,-(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp rts ice3_06:movea.l sp,a0 btst #$0d-8,(sp) bne.s ice3_07 move usp,a0 subq.l #6,a0 ice3_07:addq.l #6,a0 cmpi.w #$3f,(a0) beq.s ice3_0a ice3_08:jmp $00.l ice3_0a:move.l 8(a0),loadadr move.l 2(sp),ice3_0c+2 move.l #ice3_0b,2(sp) bra.s ice3_08 ice3_0b:tst.w 2(sp) bmi.s ice3_0c movea.l loadadr(pc),a0 bsr.s ice3_0e ice3_0c:jmp $00.l > ice3_0e:include ice_unp2.s bss loadadr:ds.l 1 ds.b 500 stackend: ds.b 10 Hello, freaks! Today I have decided to give out my packer "Pack-Ice" as Public Domain. That means, that you can use it on whatever program you want to. Actually I never wanted to give out to anybody, but I see many groups using very slow and very bad packing and depacking routines. I hate wating for my computer to decompress, so I give this packer into your hands. I hope that you will use it instead of Jek or anything. The packing algorithm is based on the Automation packer, but I have improved and debugged (!!!) it a lot. The packed files that are created are ALWAYS smaller than files packed with the Automation packer. In this folder, you will find: ICE_2_1.PRG - the packer itself ICE_UNPA.S - the normal unpacking source ICE_UNP2.S - the comfortable unpacking source ICE_DISK.S - source that depacks all loaded files ICE_READ.ME - this text As I told you above, you may freely copy this folder to anybody you want to. I really hope that there is nobody out there who still uses lame packers like Jek, Jam, Automation or anything that's even worse... This is what the packer can do: - pack all files without errors (I hope!!!) - crunch files smaller than Automation packer 2.31 - work on harddisks and ramdisks!!! - pack several files in one go (FILE*.* or SHIT.*) - Files are saved under the same name as the original. - The Offset is set to the value with best results (which is $1528). - Percentage is shown during packing. - Time for packing is shown after packing. - The packed file is checked for errors automatically (even though there won't be any. If there should ever occur an error, please contact me!) - The packed file is only saved if it is smaller than the original. - The data may also be unpacked at an odd address. Improvements for Version 1.1: - Packing time was reduced. Improvements for Version 1.11: - Version 1.1 which I made in one night returned with a Verify-Error when a special combination of bytes appeared. Pack-Ice now works fine again. Improvements for Version 1.12: - If you press Alternate during packing (while the number of remaining percent is decreased), the current file is left unpacked and the next file is packed. Improvements for Version 1.13: - Some executable files that were packed with Pack-Ice caused an error on STE computers or very new TOS version. I never realized that error, because I don't have any of those. Thanx to Jinx of FOF who spotted the error and told me about it. Improvements for Version 1.14: - Was (Not Was) found a bug in the packer. It has been removed. Improvements for Version 2.00: - Comfortable working with Pack-Ice is possible, because the mouse is used. - Fileselectbox: Select the path in which the file(s) which you want to pack are. If you select a filename, only this file is packed. If you select FILE*.*, then all files with this name are packed. If you do not specify any filename, then all files in the current directory are packed. - If you don't like working with mouse (or don't have one), then press the Alternate-key, while the program is loading. Then you can work with the old keyboard commands. - If you compress pictures (Degas, Neochrome, Doodle, ...), you may want to use the additional algorithm for picture compressing. It compresses screens to about 2 kB less. The unpacking for screens is done automatically with the normal source (ice_unpa.s or ice_unp2.s). If a picture file is packed with the special algorithm, then P> is shown. If it is not in the correct format, then -> is shown, which indicates that the normal compression routine is used. If you never use this feature, you can kill the 15 marked lines of the unpacking sources in your routines. - Some files returned with "Data could not be packed". This only occured, if there were (somewhere in the file) more than 1038 bytes in a sequence that could not be packed. I corrected this and files like Castle Master 2 should not make any problems anymore. - Other changes in packing and unpacking source have been done. The old unpacking source is not compatible with the new one! - With the source "ice_unpa.s", you can unpack data to whatever address you like (e.g.: original address: $32345, target address: $72213). Please check out that the target address is at least 120 ($78) bytes higher than the source address. Otherwise, you might overwrite the original data. - You do not need the packed length for unpacking anymore. You just need to specify source and target address. - The source "ice_unp2.s" will unpack every file onto itself. The program needs 120 bytes of free memory for saving and restoring data. Improvements for Version 2.1: - Unfortunately I have put some wrong sources into the Pack-Ice folder. Only the ice_unpa.s source worked correctly. Sorry about that. - the decrunch at an odd address wasn't possible in version 2.0 Improvements for Version 2.11: - I got special wish, demanding an input for the offset. Here it is. Have fun using this great packer! Axe of Delight = ;*K ; Unpacking source for Pack-Ice Version 2.1 ; a0: Pointer on packed Data decrunch: movem.l d0-a6,-(sp) ; save registers cmpi.l #'Ice!',(a0)+ ; Data packed? bne.s ice2_07 ; no! move.l (a0)+,d0 lea -8(a0,d0.l),a5 move.l (a0)+,(sp) lea 108(a0),a4 movea.l a4,a6 adda.l (sp),a6 movea.l a6,a3 movea.l a6,a1 ; save 120 bytes lea ice2_21+120(pc),a2 ; at the end of the moveq #$77,d0 ; unpacked data ice2_00: move.b -(a1),-(a2) dbra d0,ice2_00 bsr ice2_0c bsr.s ice2_08 bsr ice2_10 ;; Picture decrunch! bcc.s ice2_04 ;; These marked lines are only movea.l a3,a1 ;; necessary, if you selected the move.w #$0f9f,d7 ;; additional picture packer ice2_01: moveq #3,d6 ;; in Pack-Ice. ice2_02: move.w -(a1),d4 ;; moveq #3,d5 ;; If you never use the picture ice2_03: add.w d4,d4 ;; pack option, you may delete addx.w d0,d0 ;; all the lines marked with ";;" add.w d4,d4 ;; addx.w d1,d1 ;; add.w d4,d4 ;; addx.w d2,d2 ;; add.w d4,d4 ;; addx.w d3,d3 ;; dbra d5,ice2_03 ;; dbra d6,ice2_02 ;; movem.w d0-d3,(a1) ;; dbra d7,ice2_01 ;; ice2_04: move.l (sp),d0 ; move all data to lea -120(a4),a1 ; 120 bytes lower ice2_05: move.b (a4)+,(a1)+ dbra d0,ice2_05 subi.l #$010,d0 bpl.s ice2_05 moveq #$77,d0 ; restore saved data lea ice2_21+120(pc),a2 ice2_06: move.b -(a2),-(a3) dbra d0,ice2_06 ice2_07: movem.l (sp)+,d0-a6 ; restore registers rts ice2_08: bsr.s ice2_10 bcc.s ice2_0b moveq #0,d1 bsr.s ice2_10 bcc.s ice2_0a lea ice2_1e(pc),a1 moveq #4,d3 ice2_09: move.l -(a1),d0 bsr.s ice2_13 swap d0 cmp.w d0,d1 dbne d3,ice2_09 add.l 20(a1),d1 ice2_0a: move.b -(a5),-(a6) dbra d1,ice2_0a ice2_0b: cmpa.l a4,a6 bgt.s ice2_16 rts ice2_0c: moveq #3,d0 ice2_0d: move.b -(a5),d7 ror.l #8,d7 dbra d0,ice2_0d rts ice2_0e: move.w a5,d7 btst #0,d7 bne.s ice2_0f move.l -(a5),d7 addx.l d7,d7 bra.s ice2_15 ice2_0f: move.l -5(a5),d7 lsl.l #8,d7 move.b -(a5),d7 subq.l #3,a5 add.l d7,d7 bset #0,d7 bra.s ice2_15 ice2_10: add.l d7,d7 beq.s ice2_11 rts ice2_11: move.w a5,d7 btst #0,d7 bne.s ice2_12 move.l -(a5),d7 addx.l d7,d7 rts ice2_12: move.l -5(a5),d7 lsl.l #8,d7 move.b -(a5),d7 subq.l #3,a5 add.l d7,d7 bset #0,d7 rts ice2_13: moveq #0,d1 ice2_14: add.l d7,d7 beq.s ice2_0e ice2_15: addx.w d1,d1 dbra d0,ice2_14 rts ice2_16: lea ice2_1f(pc),a1 moveq #3,d2 ice2_17: bsr.s ice2_10 dbcc d2,ice2_17 moveq #0,d4 moveq #0,d1 move.b 1(a1,d2.w),d0 ext.w d0 bmi.s ice2_18 bsr.s ice2_13 ice2_18: move.b 6(a1,d2.w),d4 add.w d1,d4 beq.s ice2_1a lea ice2_20(pc),a1 moveq #1,d2 ice2_19: bsr.s ice2_10 dbcc d2,ice2_19 moveq #0,d1 move.b 1(a1,d2.w),d0 ext.w d0 bsr.s ice2_13 add.w d2,d2 add.w 6(a1,d2.w),d1 bra.s ice2_1c ice2_1a: moveq #0,d1 moveq #5,d0 moveq #0,d2 bsr.s ice2_10 bcc.s ice2_1b moveq #8,d0 moveq #$40,d2 ice2_1b: bsr.s ice2_13 add.w d2,d1 ice2_1c: lea 2(a6,d4.w),a1 adda.w d1,a1 move.b -(a1),-(a6) ice2_1d: move.b -(a1),-(a6) dbra d4,ice2_1d bra ice2_08 dc.b $7f,$ff,$00,$0e,$00,$ff,$00,$07 dc.b $00,$07,$00,$02,$00,$03,$00,$01 dc.b $00,$03,$00,$01 ice2_1e: dc.b $00,$00,$01,$0d,$00,$00,$00,$0e dc.b $00,$00,$00,$07,$00,$00,$00,$04 dc.b $00,$00,$00,$01 ice2_1f: dc.b $09,$01,$00,$ff,$ff,$08,$04,$02 dc.b $01,$00 ice2_20: dc.b $0b,$04,$07,$00,$01,$20,$00,$00 dc.b $00,$20 ice2_21: ds.w 60 ; free space (can be put in BSS) Ice! R