4IBM @ >> FastCopy III << by Martin Backschat, Bergstr.16, 8071 Hepberg, West-Germany, Tel. 08456/5495 -- It's Freeware! -- (Greetings to all 'Masters Of Puppets')hnO @`! #@%`')+-/1 3@5`79;=?A C@E`G IKMOS@oWY_a c@e`gikmq s@u`y{} @` O ` O ` / O @`! #@%`')+-/1 3@5`79;=?A C@E`G IKMOS@oWY_a c@e`gikmq s@u`y{} @` O ` O ` / STFIXERS YhgSTOS xhgFIXRUN3 PRG ȑO  STOSFX30PRG OfDEPACK hgPACK hgQSTOSFIXSTXT {N . hyg.. hygBASICMH4PRG QO UN_MJH3BIN hg9 ` r`'@O v&'"& &'H D& &'H D(k (((>( (h)*~5 25<5Jf\STOSPIC.PI1PIC.PI3SPRIT???.BINWINDO???.BINFLOAT???.BINMUSIC???.BINBASIC???.BIN*.EXY70Tos 1.62Y7DTos 1.62Y 'STOS has been fixed by theY!' GOODMAN INTERNATIONAL Y"#Public Domain & Shareware ServiceB oAJgR#?<NNT#Hz?<&NN\MATC]0RHRI00M Z, -@ -@?<?<NNX-@?<"NNT"$=-B-@x ng nmTA nmA -AMD?<NNT3K m p, Jyg( yg?</ J"Kޒ~cRF|dbNz2F|de*EdHp $$$$&&&&QLQ` ABahA4a`AadGN#AaPG~N#AaFfGfNAa*GXN#BGM8|9A|Aaf$AaHG"N#L@<N-`RG|eJ_gAv yfAuaAMa/Aa2,_?<%NNT z0<?BQ yg?</NAXNu/?< NA\NuafNuHppahaf&:ֺ`d~a| zaa"z )Щ$I$ BJg` g<gՒ`` z кgR#LpNuLpNu&R< & "$< ~`F o <Ш ШШ`"҈.A//Bg?<JNAO ap a k34akaa Rpa ??<LNApMa AbC2""38VA !|!|!| 1|!|090T@0a 3d6k433pha TAC^""3pNa :pNupNu8<#!3pra Q8<#!3praQ#!p6a#!p6a33B3D3F3H3B3D3F3Hp3ax#!333B3D3F3Hp*a0333paA0(2(#!3333p+aڰ|gְ|gf|f33B3D3F3H3B3D3F3Hp3ahNu33B3D3F3H3B3D3F3Hp3a33B3D3F3H3B3D3F3Hp3a#!333B3D3F3Hp*ab333paDA0(2(#!3333p+a |f33B3D3F3H3B3D3F3Hp3a33B3D3F3H3B3D3F3Hp3aJ#!333B3D3F3Hp*a`33B3D3F3H3B3D3F3Hp3a?<NATAa#ARakC E G I~ g <.g Q3#^!p4aH`.BASg3#!p4a `z~ Q"y"T!<\fR~ 1.pgSGf$I|mSG_.PRGpAZa:k3J <vA aa*33B3D3F3H3B3D3F3Hp3a0#!333B3D3F3Hp*a`?<NNT30NuAx@:/?/?<GNAP _fSH\*.PRGNua09gA(g<*fSH"HAa#"TApakp3J 9"T  @#"Pa^pd y"PapkNAXByJJNu??9J/?<BNAO JNu?/?<NNAPJNu?<ONATJNu/?< NA\Nu/<?< NA\Jg/9L`B?< NA\Jjp#LNu<*gfNu09Pkhg`@~3PB?< NA\/,x nf.32?< NA\|m,3PJRg3[X3^#R!`3ZX3^3Z3\3`By#"!#"X!"<Z <NB09NuC&2@ Ap222BQ"<Z0<NB09NupByZ3 ^a\3dVNuByZBy^p`4pd3Vd`ByZBy^pe`pByZBy^`p`pwByZ3^Bya09Nupx`3Z3^0<`pBy^`p`p `prCg2Rj3^3Zp`3Z3^pg`n3ZBy^pr`Zp`p3Z3^B4B8By>`|3ZBy^p`h3ZBy^pB4By:`J3Z3^p`63Z3^p`"3ZBy^p`p3ZBy^3bp `p `prCg2Rj3^3Zp `ByZ3^p `jByZ3^p`VByZ3^p`BByZ3^pq`.3ZBy^By2p`ByZ3^p`ByZ3^pl`ByZ3^p`3ZBy^By0p`ByZ3^p`3ZBy^By0p `ByZ3^pk`|ByZ3^p `hByZ3^p`TByZ3^p`@ByZ3^pj`,ByZ3^p'`ByZ3^p`ByZ3^p`ByZ3^p`ByZ3^ph`ByZpp`3Z3^pm`3Z3^py`ByZBy^pn`~3ZBy^pi`jByZBy^pv`XByZ3^pz`DByZBy^p{`2ByZBy^p|` ByZBy^p}`ByZBy^p~`ByZBy^p`ByZBy^0<`ByZ3^pf`ByZ3^p`ByZBy^p#`ByZBy^p$`ByZBy^p%`xByZBy^p&`fprCg2Rj3^ByZpt`@ByZ3^pu`,ByZ3^0<`ByZBy^0<`3Vd3X"<F0<sNBNu X0 pXp!!`` f\STOSPIC.PI1PIC.PI3SPRIT???.BINWINDO???.BINFLOAT???.BINMUSIC???.BINBASIC???.BIN*.EXY $ FIXED with FIXRUN.PRG from Y!' GOODMAN INTERNATIONAL Y"#Public Domain & Shareware ServiceBD oAJgR#D?<NNT# J"Kޒ~cRF|dbPz2F|de*EdHp $$$$&&&&QLQ` AaAaAyaGN#8AaGN#8Aaf GNAaGN#8BGM69AAa&f(AaHGN#8L@<N-`RG|eAaX/Aa,_?<%NNT y<0<?BQ y@g?</NAXNu/?< NA\NuafNuHppa`a~f&98ֹ ` $  r    b h m FIX INFOQUITSTOS RUNTIME PROGRAM FIXER v3.0Mike Horwell 1993Goodman Inernational 1993'        8 This program can be used to fix STOSbasic programs that have been savedwith a .PRG extension.It will work with newer versions ofTOS up to 3.06Written in assembler by Mike HorwellCLICK MESelect Compiled STOS Program[1][ This file is NOT | a STOS runtime program! | Please choose another.][ STOP ][1][ An Error has occured while | trying to save the program.| Either the disk is full, | faulty or write-protected.][ STOP ]F60   "  .4R N& "4 P   ,                                           j` o <Ш ШШ`"҈.A//Bg?<JNAO ap a k3akaa pa ??<LNApMa AC(2""3Al!|!|!| 1|!|09T@0a 3k433pha ATC""3pNa pNupNu8<#@r3praQ8<#r3praQ#@rp6a#rp6a333333333p3aB#@r333333p*a333paA0(2(#@r3333p+a|gְ|gf|f333333333p3a2Nu333333333p3a333333333p3at#r333333p*a,333paAB0(2(#r3333p+aְ|f333333333p3ar333333333p3a#@r333333p*a`333333333p3aj?<NATAa#Dak"HCp Stosff^a|compfVanilerfHVa^1.0 f8~p"HC. Af$2aEG <QXIE 2Hz2"?< "NA\"A"pB"Q"1|2"<DpaD <Aaa333333333p3a #@r333333p*a`3#arp4a`8~QNu?<NNT3NuA@:/?/?<GNAP _fSH\*.PRGNua094gVAg<*fSH"HAaVAdpakJ3aR <AFaVk.A: P`fpNupNu3#arp4a`3p5a`pA < BQNu//?9?<?NAO JNu//?9?<@NAO JNu?/?<=NAPJNu?/?<NAXByJNu??9/?<BNAO JNu?/?<NNAPJNu?<ONATJNu/?< NA\Nu/<?< NA\Jg/9`B?< NA\Jjp#Nu<*gfNu09khg`@~3B?< NA\/,x nf.3?< NA\|m,3Jg3[3#z`3Z3333By#2r#v"<$ <NB094NuC 2@ Ap222BQ"<$0<NB092NupBy3 a\3NuByByp`4pd3`ByBype`pByBy`p`pwBy3Bya092Nupx`330<`pBy`p`p `prCg2Rj33p`33pg`n3Bypr`Zp`p33BBBy`|3Byp`h3BypBBy`J33p`633p`"3Byp`p3By3p `p `prCg2Rj33p `By3p `jBy3p`VBy3p`BBy3pq`.3ByByp`By3p`By3pl`By3p`3ByByp`By3p`3ByByp `By3pk`|By3p `hBy3p`TBy3p`@By3pj`,By3p'`By3p`By3p`By3p`By3ph`Bypp`33pm`33py`ByBypn`~3Bypi`jByBypv`XBy3pz`DByByp{`2ByByp|` ByByp}`ByByp~`ByByp`ByBy0<`By3pf`By3p`ByByp#`ByByp$`ByByp%`xByByp&`fprCg2Rj3Bypt`@By3pu`,By30<`ByBy0<`33"<0<sNBNu 22r $  ( I  ] z    #   FIX INFOQUITCOMPILED STOS PROGRAM FIXER v3.0 Mike Horwell 1993 Goodman International 1993Tel. (0782) 335650This program is NOT Public Domain'  p      ; This program fixes compiled STOSprograms so that they will works withnearly ALL TOS versions.This program is Goodman Internationaland Mike Horwell December 1992.It is NOT Public Domain/LicencewareCLICK MESelect Compiled STOS Program[1][ This file is NOT | a STOS program! Please | choose another.][ OK ]G6?<"NNT$='@?<?<NNX'@"x'B kg kmTAT kmA 'A '@h'@ Z&NuY $ FIXED with STOSFIX 3 from Y!' GOODMAN INTERNATIONAL Y"#Public Domain & Shareware ServiceF60   "  lh $N40&4 P   ,                                           j,. hg.. hgMDPK2 TXThgHMEGA_DP2PRG 3T,,tMEGA_DP2RSC 3THn" Mega Depack =========== ************** *************** *** ************* ********* *************** *************** *************** ************** release 2.01 ============ Coded by Mike Watson ==================== This version finished - 23/11/1992 ================================== ------------------------------------------------------------------------------ Written in 100% 68000 assembler, who needs compilers to do GEM based programs? ------------------------------------------------------------------------------ This program is BEERWARE!, to register you have to buy me a beer. Guiness would be nice! ------------------------------ the boring bits ------------------------------- This program is public domain and may be distributed on a non profit making basis by bulletin boards and pd libraries. However it can only go on a cover disk of a magazine with my permission, the contact address is at the end of the text. Note - this documentation MUST be included with the program file if you do distribute it. ------------------------------- the legal bits ------------------------------- This program has been tested as completely as possible and only makes legal system calls without any 'hacking around' and as such should not cause any damage. If for any reason damage is caused then I cannot be held for responsible for it. You use the program at you're own risk. To guard against any mishaps you should save the depacked files out as a different name or in a different folder. ------------------------------ on with the show ------------------------------ Ok folks, what does it do then?? Well a few months ago I had some programs to put on my hard drive and as usual they were packed. While this is no bad thing in itself, the depacking time does tend to offset the loading speed off hard drive, so I unpacked them by hacking around in Monst for a while. Since this was a regular occurance I decided to code a program which would automate this process and would be of great help to my self as well. Anyway I eventually wrote routines to unpack everything I had and was so pleased with the result that I thought other people would like to use it as well. So mega depack was released as public domain at the end of april 1992 However development of the program did not stop there though, it went through more revisions and at about that time I had two letters from people who had seen earlier versions and had found stuff it never depacked. Thanks to Keith Frisby and Rob Gilmour for all their help. During the development of the program I also started to code a GEM shell for it. Version 2 is the result of this work. ------------------------------ how to use it --------------------------------- Anyone who has used the older versions of the programs will be pleased to see the new GEM interface which is a lot easier to use. Firstly decide on how you wish to use the program, Mega Depack 2 can run as an accessory or a program. Rename it as MEGA_DP2.ACC and copy it into the root directory of your boot disk if you want to run it as an accessory or leave it as MEGA_DP2.PRG and copy it where you like if you are running it as a program. Do not copy it into the auto folder because it uses GEM which is not initialised until after the auto folder programs have been run. To load in a file for unpacking click on the LOAD button. A fileselector will appear and you can select a file for unpacking. The file will then be loaded and an attempt will be made to unpack it. If a successful attempt is made then the SAVE button will be made selectable. Clicking on the save button will bring up a file selector where you can select the file to save to. Clicking on cancel will abort the save process. A new option for v2 is the batch option. Click on the BATCH button and a file selector will appear, select the path that the files will be loaded from. A new file selector will now appear, this time select the destination path where the files will be saved to. After this the files will be loaded,depacked and saved to the destination. There are some files which cannot be easily recognised and require the user to decide themselves on how to unpack it. The clashes are - ice 2.0 and 2.2 have header Ice!. all pompey datafiles have trailer POPI. atom v3.1,3.3 and thunder 1,2 all have header ATOM. When this occurs you are given a choice of depackers to use or a chance to exit. Choose what you think is the right depacker. It will more than likely crash or produce garbage if it is the wrong choice so save it out as a different file name and check it. If something is wrong then try again with another option. -------------------------------- extra bits ---------------------------------- A new feature of v2 is the ability to recognise several popular file formats. Some may be packed others may not but mega depack2 will reccommend a package to view/use/depack the file. The current files recognised are LHARC, ARC, ZOO, PK ZIP, IFF, DEGAS unpacked, NEO pics, NEO animation object files. If MEGA DEPACK 2 cannot depack a file but suspects that it may have been packed then please send it to me. If you have written a new packer then I would also like to receive it. Ways to spot packed files :- Mega depack may say that it could be packed. The file was packed by yourself. It displays a mesage when loaded e.g 'blah packer v555555 depacking'. Flashes the colours in a hypnotic fashion. --------------------------------- wanted ------------------------------------- 1. Back issues of Judge Dredd the Megazine(1,3,7,10,12) 2. Any info on the archiving method used by LHARC 2.01, its so much better than Atomic. I have located the depacker inside the archiver but havn't been able to rip it out yet. I want to write an exec packer round this algorithm as it beats everything!. 3. Any versions or Sentry packer other than 2.05. And all depack source. ----------------------------- acknowledgements ------------------------------- Steve Delany at Floppyshop - the best pd/shareware library in the uk! Keith Frisby - supplier of packers and also the first person to write to me. Rob Gilmour - another person to supply packers. Gordon & Dave - asteroids - the business. DML - photochrome simply the best iff convertor on the st. Gus - for liking star trek and for having a strange sense of humour (totally trek tastic matey!). My cd collection - for providing musical help in the form of New Order, The Velvet Underground, Sonic Youth (nice to see them getting some recognition at last - they have and always will beat nirvana any day!), Public Enemy, 808 state, The Byrds, The shamen, NIN, The Revolting Cocks , primal scream and many others no mainstream rubbish here *8} The authors of all the - Axe (fire & ice toppled by atomic) packers. - Altair (atomic - 3.5 the business!) - DC software (dcsquish) - Eagle of Sentry (Sentry packer) - The Firehawks (Speed packer) v3 looks great! - JMP (Qpack) - JPM (pompey & thunder) - Mike Coates (bytekiller) - Ozz (automation & lsd) - Ralph Hartmann (happy - a brave early attempt, birdies med rez fix was possibly the only useful contribution he's ever made to the st!) - Russ Payne (bytekiller) - Thomas Questor/Markus Fritze (pfx packer) - Tim & Andrew Knipe (jam/jek, g'day!) - Tom Hudson (degas) - Trio inc (spectrum 512 - unispec & digispec are superb!) - Vermillion Pawn (!?) (ivory dragon - strange) - any other packer authors I forgot. ------------------------------------ ????? ----------------------------------- Hi to everyone that I met at the Ripped Off convention in Bradford. Griff's new 3d stuff and also that of the rest of the Inner Circle is truely stunning! Please release that little preview of your demo!!! ADVERTISEMENT TIME - honestly my game is finally finished, just tying up a few loose ends before its's release + it needs testing on TT! ----------------------------- packers supported ------------------------------ program/packer versions formats ============== ============ ================================================ 4pak programs atomic 3.1/3.3/3.5 programs and datafiles automation 2.31/2.51 programs and datafiles automation 5.01 programs and datafiles ba pack programs bytekiller 2.0/3.0 programs Russ Paynes dcsquish 1.0/1.2/1.4 programs degas elite picture files pc1-3 gollum programs(both huffed and not) happy programs ice 1.1/2.0/2.2 programs and datafiles 2.3/2.4 ivory dragon programs and datadiles fire 1.0/2.0 programs and datafiles jam 1/2/3/4 programs and datafiles (lzh,lzw,jam,ice) jek 1.2/1.3 programs and datafiles lsd 1.2 programs and datafiles pfx 1.1/2.1 programs pompey 1.5/1.9/2.6 programs and datafiles pompey 1.7/1.9x/2.3 programs 3.0 qpack 2 programs and datafiles sentry 2.05 programs spectrum 512 picture files speed packer 2/3 programs and datafiles stos programs superior programs thunder 1 programs thunder 2 programs and datafiles unknown programs (used to pack concerto on STF 37) vic2 used on california games 2 48 packers supported 81 different file formats Also recognises a few popular unpacked file formats such as IFF and NEO object files. ----------------------------- just for interest ------------------------------ Here's how the files are unpacked (just for the curious). 4pak - uses a modified dissasembly of the depacker. atomic progs - modifies program and jumps into it. atomic 3.1/3.3 data - uses routine supplied with program. atomic 3.5 data - uses a dissassembled routine from the packer. automation 2.3/2.5 program - modifies and runs program. automation 2.3/2.5 data - uses routine supplied with program. automation 5.01 program - modifies and runs program. automation 5.01 program - uses an ICE2.4 depacker. bapack - modifies and jumps into program bytekiller - modifies and jumps into program for Russ Paynes version. uses a dissassembled routine from the depacker on versions 2 and 3. dcsquish 1.0/1.2/1.4 - uses dissassembled code from the depackers. degas elite - uses a dissassembled routine of unknown origin gollum - uses a modified dissasembly of the depacker. happy - uses a heavily modified dissasembly of the depacker. ice progs - all modify and jump into program. ice data - all use routines supplied with program. ivory dragon - programs and datafiles use a dissassembled depacker. fire progs - all modify and jump into program. fire data - v1 is a dissassembly of unknown origin v2 came with program. jam - a real mixture of dissassemblies and code that came with program. the older ones use the old jek routines. most of the programs modify and run the program. lsd/jek - programs are modified and run. datafiles are depacked using a dissassembly of the depacker. pfx - uses a dissassembly of the depacker. pompey - programs are modified and run. datafiles use code that came with the program. qpack - uses code supplied with the program. sentry 2.05 - programs depacked by modifing and running depacker spectrum 512 - uses a routine a found on a pd disk. speed packer 2 - programs are modified and run, datafiles use code supplied with the program. speed packer 3 - programs and datafiles use code supplied with the program. stos - uses a dissassembly of the depacker. thunder - programs are modified and run. datafiles use code supplied with the program unknown packer - uses a dissassembly of the depacker. The picture depackers for Spectrum 512 amd Degas elite were included because some art packages will not accept packed versions of these files. --------------------------- history before v2 ------------------------------- revised on 24/4/92 to depack gollum progs and fix ice depack bug. revised on 25/4/92 to depack happy progs. revised on 26/4/92 to depack jam packer v1 progs, lsd/jek datafiles, spectrum512 piccies. revised on 27/4/92 to depack pompey packed prog & dat files revised on 27/4/92 to fix anther ice depack bug (2.3 prog files did not always depack properly. revised (again!) on 27/4/92 to depack dcsquish programs. revised on 28/4/92 to depack 4pak programs. revised on 29/4/92 to depack automation chunk packed files. revised on 29/4/92 to depack old style ice packed files. revised on 29/4/92 to depack packed degas files. revised on 9/5/92 to work on pre tos 1.4 revised on 11/6/92 to work on automation 501 files properly (small bug) revised on 26/6/92 to work on ice datafiles, (my source had been corrupted!) revised on 15/7/92 to work on what I believe is the stos packer and also a packer for which I have no clue at all to what it is called but was used to pack concerto on st formats coverdisk 37. its an appallingly bad packer anyway so who cares. i would strongly advise anyone using the stos packer to discontinue using it for two reasons : - firstly its a bad packer! - secondly and more importantly is that it relocates its depacker to $7fd00 which on a 520st is just below the screen ram but on any other machine it is in the middle of no mans land. since most people with a meg or more generally use that ram this depacker has a habit of trashing whatever is there, especially with me because the first half meg of my ram is used by my harddisk driver, cache, replacement desktop and desktop accessories. you have been warned!!! revised on 21/7/92 to work on thunder packed progs (cheers keith!) revised on 21/7/92 (again) to work on dcsquish v1.0 & 1.2 packed progs. (I was bored!) revised on 24/7/92 to work on pfx v1.0 & 1.2 packed progs. fire v1 packed programs and datafiles revised on 25/7/92 to fix yet more ice bugs. and to work on ivory dragon packed progs/datafiles. revised on 26/7/92 to update routines to unpack pompey pirates stuff. also to fix clashes between atom files. extra bytekiller compatibility added as well, phew! revised on 29/7/92 to work on pompey 2.6 packed files. revised on 07/8/92 to work on a packer used by superior although it may not be a new packer as such but a old version of fire or ice with a new header. revised on 09/8/92 to work on thunder v1 packed program files.Also pompey v2.3 and 3.0 progfiles. And speed packer 2 progs and data. revised on 18/8/92 to work on BAPACKED progs and pompey 1.9x progs. revised on 24/8/92 to handle an extra PFX packed format and Qpack progs. revised on 10/9/92 to depack sentry v2.05 packed programs ----------------------------- history after v2 ------------------------------- version 2 (beta) completed on 29/09/1992. version 2 release completed on 11/10/1992 version 2.01 release completed on 11/10/1992. Updated for speed packer 3. Nice packer, strange way of saving out files. Its exec files don't have a depacker. You have to use a supplied prog which locks into the trap 1 vector. The first line of the packed file is a trap 1 statement and its this that triggers off the depacker. ------------------------------------------------------------------------------ The full 68000 source (devpac2) is also available for 5.00. It's fully commented and would be useful if you are learning 68000 as there are no tricky bits in it. Only calls to the O.S are used. ---------------------------------- address ----------------------------------- If you want to contact me to send packers, programs or anything else you think i'd be interested in then my address is - Mike Watson, 42 Gilmore Place, Edinburgh, Scotland Please include a disk, SAE/IRC's to gaurantee the next version and a speedy reply. Please mention the version number as well if you find any bugs! Only contact me for legal reasons though. I really am fed up with people sending me or asking me for cracked s/w. I don't have and don't want any, OK! --------------------------------------------------------------------------- Mike Watson - 29/09/1992 --------------------------------------------------------------------------- `_.j`~Yoh! Hi to Keith for finding some bugs , Andy & Doug , Gordon and Dave.MEGA DEPACK 2 light years ahead of the competition! Aq`CHp0lGlpJ$f|3v#r\.|Ha4p#aLhHr 3rFr #_r:a3rHapaL2Hr #v r:a0:t|(gN`3v*O#r\.|H*m - ЭЭ// ??<JNAO a ^a xaa`a aC_`a A^a AtaN3sJyufJyufJyufnp2aBr BrBrBrByraH< g< g<gN<g< g<g~<gx<gr<g At0aAsaJyvk,8| :|<|At aN8|:|<|Asa:`poa<Jytg><?Hzl?<NNAPOJf .fn ..gfRysAk$ys *fSHCf<\|\#sJyug#s|*|.CtYYYB(`V ..g#tAa\,ytA"zj$zjg`BB .a,Jg#rPAVa>aBsaa aAiza JyrLk`a arAhaJr`k*AVaaAiJytgAi8a JyrLkvBsab,yt` HV?<NA\O?<ONATOJfz .f ..gRysAj$ys *fSHCf<\|\#sJyug#s|*|.CtYYYB(`M,N^SyskRAj *fUH \fRH*.CtB ysSH \fRH#sJyug#s`AUaap*a#r BrBrBrByrLkNHraa4N8|:|<|AkHaanaNJysk09s,ytM,N^QByuByuJyufLNuHaCSiafARaa LNuEi<$RE &Jg_`g`Ei"$R&Jg_`g`Ei $R&Jg_`g`NuEh$RE g`NuAh P :eAaLr8Hr p*a3 r aNuAh P :eAaNupNaxBr BrBrBrByraxNupNaN#r BrBrBrByraJNup*a #r BrBrBrByrLgHraNu?</NATO#rdNu/:c?<NA\ONuKJg #tAef \fJ(g"H *gJf` (:gBHzQJ?<NA\OMQ>?<Hze?<NNAPOJf .fPuPuBys ze *g*JfSH (\gRH|\*|.|*B(3t zeNCc8Edf !\fRIB#s#s ".fRJGt` zeCbfBPuPuNu p aa3rFpna#_Xr:aglNuHx?<HNA\O#vNu/?<INA\ONu?<HPHzP ?<NA\O?<NNAPONu/#sAfb PA av?<HNA\ONu/?<HNA\ONu p4a3r #_fr:a(`/3q@ A_fH 0Aa, _NuAO"0<NB0:a^Nu Pp6aLoLHr #r:a#a>v,#a:v0p3a#r BrBrBrByr#er#era/:apda`LnHr #dr#dra`3r 3rJpea,aJ#r:p*a# r BrBrBrByrLdHra Nu Pp6aLn`Hr #r:a#`Pv,#`Lv0p3a#r BrBrBrByr#dr#drap3ar#r BrBrBrByr#cr#cra^pfa6LmHr 3_r a>pgaa4 Nup/aLmHr 3r 3r3r#r:aNuppaLmZHr ~ |Mcn3r 3ra*z_NRF,Q~|Mc3r 3ra*z_(RF mg mg mgB` , `*m ,QNuHpaJE`RJgJf|\fpZa2#sr:#t r>aNAXOJ@jPrLNuQrLBgHP?<< g8|:|<|AZa#r`a AZaAZtaNu AZa8|:|<|AZpaAZLaaD zVDCE&a#s#rTaNu AZ:a8| :|<|AZ&aLAZaa zUCEa#s#rTalNu AYa@8|:|<|AYaAYa:aa zUCRRah$H#s(HV#rTa1ZNuCDaDa NuCHaC"p~!Q#s1|NuJN6#rTNuCGa#8s1|Nu@N#rTNu(ICGa"LssssXI#rT a&NuCGaaNuCHDav1|NuJ (>CssssHNL?#rTNuCHa,1|Nu@#8sHNL?#rTNuCHa1|Nu>#6sHNL?#rTNuCHa1|Nu>#6s#rTHNL?#rTNuCH a1|Nu>#6sN#rTNuCPDa1|Nu&N#rT#sNu/ CGa"_ssssXI a&#rTNu AWaaZAWap2aBr BrBrBrByraȰ<g8<g|#r` AWPa8|:|<|AWAVavaCF~a zR#s#rTaNu AVa28|:|<|AVaAVa,aCFXab zR"HS#rT#saHNuCFa<#rTaNuCGa`CGa1|NuNf#rT#sNuCGa1|NuNf#rT#sNuCH a1|NuNj#rT#sNuCH6a1|NuNj#rT#sNuCHaa|1|NuNj#rT#sNuCHa\#s1|NuNj#rTNuCHaZ#sC#rTa NuCGa:#sa#rTNuCA a`CA-aCG#s!|NqNq !|NqNq*1|Nu1|$(1|`<@N #rTNuCAa#sC#rTaNuCAa,HR$ @P"@#rT#sM zP LSD!gHaL`NuCA a#sG*KL#rTaNuC=a#sG*KL#rTaxNuC=a#sG*KL#rTaNuC9a&HAC$2+.3:'Tp# QQNq(k>A'l@'lN'l\ aEHH@HtJg pbg#sNuCD8ad&HK*KXMPK#rTaNuI` IH`I,HKCD8aa>NuM#sK$#rTC;aaNuM#sK$#rTC;aaNuCEHa#s1|Nu(N#rTNuC|a"J*g2P`f``~BEg EQJENu&`|a84@HJ*fXF`.a2I|aʺ<m|ag |aEA`*`2P:`aDgt@IP$$Q` f&ed&fg^|avg &CrtfTATAQP`Q|aJgCpQP`QBC&&H&&M`` _HRa($_" a^NZ LNu ``````>*QNu CE}|0z@A@B@C@DQQHf`QN,,,,QNu#sH ATOMf0 /K(MGpQHHU M&`I:|a``X|g"TezF`$|aHg\E`|a>g E`&`| a,E?f:I|a|m4TO]En(MmXL|a4P`>BEg EQJENu&`I|a84@HaDgt@IP:$$Q| z g^TeF`|agPEVE`|aHE|aPVSEk|HF&Qjf"<f _aLL apQLNu&` `````` `` > BPQNu BCE}|0z@A@B@C@DQQHf`M,,,,QNuH ATOMf /K(MGpQHHU Ma`~|Gg"TezF`$|a*g\E`|a g E`afG`| aE?fI`BEGg EQJENua>G`I|a84@HaDgt@IP:$$Q| z GgfTe F`"&>&Nu|agPEVE`|aHE|aPVSEk|HF&Qjf8|f _aJL apQLNuaG` `````` `> BPQNu BCE}|0z@A@B@C@DQQHf`M,,,,QNuHKaLFiref> Ia@.Mxa8IZ|HFzaXd raRd"Lv !anH@@Vҩ%QnfLNup%QNu> f.%߇`>.-%Wއ`,އgNu> f.%߇Nu.-%WއNurއgAQNupaSAk0gTSAgXadBadZ`bpaSAjpNupaAAL!a҅NupaSAkNAAL aAa0`Lpap`,pap` f .%߇AQDNu.-%WއAQ,NuއgNu> f.%߇Nu.-%WއNurއgAQNuCtaTxr1 Hka1 AgCjtaTr1 HaBq `rptadpt@aBC@!!Q`    H Ice!fx K.Il,L&N"NEApw!QaaXad,"K><|8!zD@DADBDCQQHQ CQjpwEA"QLNuaVd"raPdCv !ajH@@Vҩ%QnbNup%QNu> f.%߇`>.-%Wއ`,އgNu> f.%߇Nu.-%WއNurއgAQNuCtaTxr1 Hka1 AgCrtaTr1 HaBq `rptadpt@aBC@!!Q`    HaR Ice!fDaHKaB.(I,I&N%a@ajd*><|8#zD@DADBDCQQHQLNurQNua*d"ra$dCv !a"H@@Vҩ%QnNuf%Nurf%AQNuCtaTxr1 Hka1 Ag"CvtaTr1 HaBq jD`rptadpt?aBC@!!Q`R   #sNSHIx,LafadKa^."Npw!Q&N%aV*Ka~d*><|8#zD@DADBDCQQHQLSfpw#QLN[NurQNua*d"ra$dCv !a"H@@Vҩ%QnNuf%Nurf%AQNuCtaTxr1 Hka1 Ag"CvtaTr1 HaBq jD`rptadpt?aBC@!!Q`R   `^H$Itxr:<9TDZb63@RCKs c,03s@c 7 3 11TBX03s@b7 01@3 1TBQ03s7 3 11TBXGfL+Nu zCjprtQQ6t[2AXd zC<(zfod0)Q|%dT@01Gm2G8+k20ERRJe20fH|lL`Sj8*ZgYRR811@Gd1@4131 Gd1 320fH|m-t)4Bj%TFkg, `&% |,`g]FDF-%-QFDF*D? z~0JA @2 Q zP`//?/wwws333331"HC(H,I*N((< :<&N~Q$~d $RESn`.,H$ED@@Ar$TApAn QڀnNuoSQ`X(H*АJ`jS f dRBAf d@G6vBA30HxlFDSBf QQJCgAV30HB`  Q&LPoG8tf dQBARB3 gHSCf QQ3 HC`  |g@G2vf dQRCBB30Hf RQKs0`0  BBvBDf dvx@f RQDE HSA"Q`Nu z"z$`G&G&* fale2rvfa`eLrBDad6DrfaLQQ`8rx`ra@<m<gra062< ` 2< BTB6aSJ QmNu DNuSABBf DQNu L, $ (Jp gtnate `2xvarfX4`a^d,aZdaVe ra~BRB`aFexvaJf0mNuv`"a.etrf BQ2gXRAASAa>6a"J!Q`f Nuxrtf BQ2RAISAfNurtf BQNua6t`v `Nu$M$ "JI`8$L"JIpf S@k"Q`rdAAS@kQdm`Nua*aNurY3RA AfNua KG $K gtaxe `6xvavf\4`abd0a^daZeraBRB`aHdx6<aJf0mNuv`"a.etrf BQ2gXRAASAa>6a"J!Q`f Nuxrtf BQ2RAISAfNurtf BQNua6t`v `&HA$K gtafe `2xvadfL4`aPd,aLdaHe ranARB`a8exvatpa$AFgpaQe$NugNu* NuS@rgQNu* `pap54Ffaepa6paAGg`a6RB30QeNu oprgxA` oprgЁH@`Nu o"/ / /V$ Sf$Nu , HD , #sp#rT&N~*6<Q~d So:Q` H"CAD@CD@ArTApAQoQ`Nu,IEpfxQ$I.|܆f ,D݆e܆f ,D݆et܆f ,D݆܆f ,D݆܆f ,D݆܆f ,D݆܆f ,D݆܆f ,D݆܆f ,D݆܆f ,D݆܆f ,D݆܆f ,D݆܆f ,D݆Q|e `zrt`B܆f ,D݆e܆f ,D݆ert`r t`܆f ,D݆e0aNTBr p܆f ,D݆@QGQe`aPB`f N"J fNupNupNupNut܆f ,D݆܆f ,D݆܆f ,D݆܆f ,D݆܆f ,D݆܆f ,D݆܆f ,D݆܆f ,D݆NuQPAC2-JMP(C)1989 N"M "*$I fare2rvfafeLrBDaj6DrfaRQQ`8rx`raF<m<gra662< ` 2< BTB6a"SJ QmJgNqNu DNuSABBf DQNu`HzC#rT#s#G#+HA/ :P/C"(oEA"W,zp$"2tkvKSfR@|f*z(oE"WA,o :prv054|eTC B@H@e //W. o"WGd$ B@2S@k Q|gpk$X0HJ@g<(I0@Q`X0@(IpQ`O Nu`#H#sA4Hz/ :P/C" o"WGd$ B@2S@k Q|gpk$X0HJ@g<(I0@Q`X0@(IpQ`O NuC#rTLHJCEK <Q#K#s#KC#I#I#J#J#J # J` I,OK -aЭR&@.(m -$Sf(mEt*g*g *g.۾eR`RBASAQ`RBA*SAQ`R|z+SBESCQQ|TK`ANuHM,MML,A mM,A OxM,O~K?<MBVaDTaM, MіT~*J$z(z' IM&Vc. J Pg aJ@g2(`2( J``M6M.C Q (M*!VШ!@M.VL -Nu a|JgBMb V0/0MNRV1V/?(aT _M8RV1V?(aTNuM V0/0rBBaJ@g`SA|f1BNug0<`B@SG|gNu~RNuA."P I"h$I (A"RRR!SfNuH JE &H~raHdaDeP`صoLNu`ta,Q Agoa|0an"LQ`0< Q`Of>ONuadpt`taQ Agma2p` `a`a0gadt`Q`ntaQtgSAOf>ORQrNuHB SP20f>JPf:*H* ".C@$I&I,OpO#QNaG SfNpOQLNu|~GNЀfNe^ `$ta0"`ЀfNetaGjdFBBBUfHE:Nu$"ЀfNAQ$Nuag UBeGBBG`ЀfNeЀfNe" v`NЀfNeagv`8ЀfNevЀfNeagv`va`ag "Ga&a`aF&`"Ga(IT$$Q:`T8 f рNu ( WЀ NupHMz"H SPv3f@JQf<* .$H# # # # Gp&Q/ aa EaaLNuBE< GvxfTCTCQx KG##Q`Hrp Ajg@QNu @QNu QAjNur2aJg.8D@gHg d~` ra@D` G30lNu `````` zA "HC B"@#rT#Ǡs*I2<><E}GCꃠHk AQ`DFRFAQef@Te zpA "MC}><TB@<< 2I2Id2Q`2Q2QNu0@3v"C"hI@ B(@/ a.pQ(_#}Bs zC"p9!QB#rTNu"< yv"g"<A(z yv"l8<`xP`.Jm RSDSf`HEgHD@RSDSfJDnHa LQNuM'Jyv"fN#wE(GPKx~`0 L"z0TwT L"J0TT L"K0TT L"M0TTRG|m`R yv"f2#wEPBG` L"z0TwT L"J0TTRG|(m`BG` L"N0TTRG|(mNu$zAX#sCXxz|$IKnM. <߇eN4NFfoLއf. <߇dN$N6KE@@D@N"1(1(1(1(1(1(1(1(Q޳nNuއf. <߇efއf. <߇dpr އf. <߇pQhNupއf. <߇0އf. <߇0އf. <߇0އf. <߇0(Nuއf. <߇dprއf. <߇pQNupއf. <߇0އf. <߇0އf. <߇0އf. <߇0އf. <߇0އf. <߇0އf. <߇0އf. <߇0NuE&(* J"JCn$I&JSj K"J$`#s* fare2rvfafeLrBDaj6DrfaRQQ`8rx`raF<m<gra662< ` 2< BTB6a"SJ Qm#rTNu DNuSABBf DQNu$I #sI ( aeramNuaedae*ra&J#mNura&J##mNurag6Cra>O24pa&Jp#QmNuae>raf2I>AaZtp6C raL>O24paB&Jp#QmBNura(2I>Aatp6CraQmNuBBf ( DQNuf ( DNu Q&&MGC Vic2fx&(E~$$QCS H@#QIMK8.ACpr <~:RGAgd:5Pj`:6Pj`MPRfEC,HF~px2k 1De讞D`VG~HF<HF讞D`DxDe讞D`G~HF<HF讞Dz1EQ ~HF<HFd:5Pj`:6Pj42k 1De讞D`VG~HF<HF讞D`DxDe讞D`G~HF<HF讞Dz1EQ ~HF<HFd:5Pj`:6PjgRSfNu2k 1De讞D`VG~HF<HF讞D`DxDe讞D`G~HF<HF讞Dz1EQ ~HF<HFd:5Pj`:6PjJg2TA2k 1De讞D`VG~HF<HF讞D`DxDe讞D`G~HF<HF讞Dz1EQ ~HF<HFd:5Pj`:6PjRSWf`R` Mega Depack 2 mega_dp2.rsc[1][ | | Can't find MEGA_DP2.RSC ][FIND IT!][1][ | | OOPS! FILE ERROR][FIX IT!][1][ | Sorry, there is not enough RAM | to load this file.|][CANCEL][2][ Select search mode.][RECURSIVE | NORMAL ]Loading Saving Waiting Depacking*.*qqr r,r:rBExecutableDatafile Picture Archive Packed by 4PACK.Coded by ???.This MIGHT be an ARCED fileTry using ARC to decompress.it!!!Packed by ATOMIC v3.1.Coded by Altair.Packed by ATOMIC v3.3.Coded by Altair.Packed by ATOMIC v3.3.Coded by Altair.The BMT fix!Packed by ATOMIC v3.5.Coded by Altair.THE packer on the ST!Packed by AUTOMATION v2.3r.Coded by Ozz.Packed by AUTOMATION v2.51.Coded by Ozz.Packed by AUTOMATION v2.3r/51.Coded by Ozz.Packed by AUTOMATION v2.51Chunk packed fileCoded by EGBPacked by AUTOMATION v5.01Coded by EGB/AxePacked by BAPACKCoded by BRASPacked by BYTEKILLER 2Coded by M.CoatesPacked by BYTEKILLER 3Coded by M.CoatesProbably unpacked.Unless it's a new packer.Possibly packed.File header is "xxxx".Send it to me!This file is unpacked and thelength shows it to be a DEGASpicture file.DEGAS ELITE file.by Tom Hudson.Packed by DCSQUISH v1.0.Coded by by Double Click S/W.Packed by DCSQUISH v1.2.Coded by by Double Click S/W.Packed by DCSQUISH v1.4.Coded by by Double Click S/W.Packed by FIRE v1.Coded by AXE.Packed by FIRE v2.Coded by AXE.Packed by GOLLUM.Packed by GOLLUM.With Huffmans encodingPacked by HAPPY packer.Coded by Ralph Hartmann.Packed by ICE v1.0Coded by AXE.Packed by ICE v1.1.Coded by AXE.Packed by ICE v2.0.Coded by AXE.Packed by ICE v2.2.Coded by AXE.Packed by ICE v2.3.Coded by AXE.Packed by ICE v2.4.Coded by AXE.Packed by ICE v2.3/2.4.Coded by AXE.Packed by IVORY DRAGONCoded by Vermillion Prawn!IFF file. Use a good art progOr Photochrome by Doug!Packed by JAM packer 1.Coded by Tim & Andrew Knipe.Packed by JAM packer 3.Coded by Tim & Andrew Knipe.Packed by JAM packer 3.Using V2 compressionCoded by Tim & Andrew Knipe.Packed by JAM packer 3.Using LZH compressionCoded by Tim & Andrew Knipe.Packed by JAM packer 4.Coded by Tim & Andrew Knipe.Packed by JAM packer 4.Using v2 compressionCoded by Tim & Andrew Knipe.Packed by JAM packer 4.Using LZH compressionCoded by Tim & Andrew Knipe.Packed by JAM packer 4.Using LZW compressionCoded by Tim & Andrew Knipe.Packed by JAM packer 4.Using ICE compressionCoded by Tim & Andrew Knipe.Packed by JAM packer 3/4.Using LZH compressionCoded by Tim & Andrew Knipe.Packed by JEK/JAM v1.Coded by Tim & Andrew Knipe.Packed by JEK v1.2d.Coded by Tim & Andrew Knipe.Packed by JEK v1.3d.Coded by Tim & Andrew Knipe.LHARC -lh1- archive.Use Thomas Questor's Lharc todecompress it!LHARC -lh5- archive.Use Thomas Questor's Lharc todecompress it!Packed by LSD v1.2/1.3.Coded by Ozz.Packed by LSD v1.2.Coded by Ozz.Packed by LSD v1.3.Coded by Ozz.This file is unpacked and thelength shows it to be a NEOpicture file.Animation object file.Created by Neochrome Master.THE art package! (hi Stefan!).Packed by power packer2.Something from the AMIGA!!Packed by PFX packer.Coded by M.Fritze & T.Questor.Packed by POMPEY PIRATES packerCoded by JPM.Packed by POMPEY PIRATES v1.5Coded by JPM.Packed by POMPEY PIRATES v1.9Coded by JPM.Packed by POMPEY PIRATES v2.6Coded by JPM.Probably unpacked.Unless it's a new packer.Possibly packed!Send it to me!Packed by QPACK v2.Coded by JMP.Packed by BYTEKILLER.Coded by Russ Payne.Packed by SENTRY v2.05.Coded by Eagle.SPECTRUM 512 file.Coded by Antic.Great ART package.Packed by SPEED packer v2.Coded by The Firehawks.Packed by SPEED packer v3.Coded by The Firehawks.GREAT packer guys!Packed by STOS(tm) packerPacked by Superior packer?Possibly by AXE.Packed by THUNDER v1.Coded by JPM.Packed by THUNDER v2.Coded by JPM.Unknown version of POMPEY PACKERSend it to me!Packed by an UNKNOWN packer.Any clues folks?Packed by vic2 packer.As seen on california games2.PK Zip archive.Use PK Zip to decompress itf ff $ f"F X"nFile type : File type : _____________"""""""""""""File : File : ________.___"""""""""""File info : Packed size : File size : _______"""""""Unpacked size : Packed length : _________"""""""""MEGA DEPACK V2.10LOAD & UNPACKSAVEBATCHHELPQUITINFOStatus : 1993 Sinister DevelopmentsCode and design by M.WatsonGREETZMEGA DEPACK v2.10Copy me, I want to travel!1993 SINISTER DEVELOPMENTSCoded by Mike Watson using Hisoft's DEVPAC2Depack code by the authors of the respective packersAll correspondence to: Mike Watson42 Gilmore PlaceEdinburgh,EH3 9NQSCOTLANDMEGA DEPACK V2.10 HELP SCREEN - 1FILE INFO - this details what packer packed the fileFILE TYPE - This will state either executable of datafile PACKED SIZE - The total size of packed fileUNPACKED SIZE - this is the original size of the fileFILE - file loaded minus any path/drive detailsSTATUS - program status(waiting,loading,unpacking,saving)NEXT SCREENMAIN MENUTHE MAIN DISPLAYMEGA DEPACK V2.10 HELP SCREEN - 2WHAT THE BUTTONS DOLoads & automatically unpacks a fileSaves an unpacked fileUnpacks an entire folderMAIN MENULOAD & UNPACKBATCHSAVEHELPYOU'RE LOOKING AT IT!Packers supportedWhat all the buttons doReturn to menuWhat help do you require?4PAKATOMIC 3.1/3.3/3.5AUTOMATION 2.31/2.51/5.01BRANCH ALWAYS PACKERBYTEKILLER 2/3/R.PAYNESDCSQUISH 1.0/1.2/1.4DEGAS ELITE PICCIESGOLLUM PACKERHAPPY PACKERICE 1.0/2.0/2.2/2.3/2.4IVORY DRAGONFIRE 1.0/2.0JAM 1.0/2.0/3.0/4.0JEK 1.2/1.3WOW, THATS A LOT!LSD 1.2PFX 1.1/2.1POMPEY 1.5/1.7/1.9/1.9x 2.3/2.6QPACK 2SENTRY 2.05SPECTRUM 512 PICCIESSPEED PACKER 2/3STOS PACKERSUPERIOR'S PACKERTHUNDER 1/2ONE UNKOWN PACKERPOWER PACKER 2MEGA DEPACK V2.10 - Packers supportedCANCELI CANNOT DETERMINE THE VERSION OF ICEWHICH CREATED THIS FILE. PLEASE CHOOSEA SUITABLE VERSION OR CANCEL TO QUIT.V2.0V2.2PACK-ICE FILE CLASH!CANCELI CANNOT DETERMINE THE PACKER THATCREATED THIS FILE. PLEASE CHOOSE ASUITABLE PACKER OR CANCEL TO QUIT.Thunder v2Atomic v3.1Atomic v3.3ATOM FILE CLASHCANCELI CANNOT DETERMINE THE VERSION OF THEPOMPEY PACKER THAT CREATED THIS FILE.CHOOSE A SUITABLE VERSION OR CANCEL TOTEXTQUIT!V1.5V1.9V2.6POMPEY PACKER CLASHHi to :- Gordon,Dave,Keith,DougAndy,Andy,Andy,ST NewsGraham,Phil,LawrenceMoray,Gus,Jim,Rab andanyone who has writtento me after seeing anearlier version.GREETINGSOK$>Xfz.""(<D\v  &'C_`a,5#0 ?@"Avw5x;,6KL0M:"%*+,EFQ_`aghinopuvw123KLMbcdxyz     789HIJRST`a bwxy  &67&8_`'a&##  # C S T \ & & '     ) *  + B C D Y Z [ q r s     1   /  . -  ! 6 !  R n 0   3         % 60 0(  32   .   2  N'  j       E0 !  3C   0A 4 : .+ J5  f/ 9   '  0 :0 !  38 0   0% $ * G  F b ~     0 ,  * &B^ z        " > Z   v   : V r     0% *  ( '%&6% 0R  '   %#n"""    +  7  0  *   ( U '%%&2N      0j       .  0J  50  fN!&Lm . hgQ.. hgDEPICE S hgR-DEPLZH S hgU<DEPLZW S hg[nDEPV2 S hg]JAMDELUXS hg`S9JAMPACK4DOC hgoTJAMPACK4PRG hgw6nLDRUNLZHS hg1ICEPACK {;ICE Depack routine as used in JAM packer V4.0 ; Useage: MOVE.L #$packed_data_start_address,A0 ; MOVE.L #$place_to_put_unpacked_data,A1 ; BSR DEPACK DEPACK: MOVE.W $FFFF8240.W,-(SP) movem.l d0-a6,-(sp) ADDQ.L #4,A0 ;GET PAST ICE! HEADER bsr.s ice04 lea -8(a0,d0.l),a5 bsr.s ice04 move.l d0,(sp) movea.l a1,a4 movea.l a1,a6 adda.l d0,a6 movea.l a6,a3 move.b -(a5),d7 bsr ice06 MOVE.W (SP)+,$FFFF8240.W ice03: movem.l (sp)+,d0-a6 rts ice04: moveq #3,d1 ice05: lsl.l #8,d0 move.b (a0)+,d0 dbra d1,ice05 rts ice06: bsr.s ice0a bcc.s ice09 moveq #0,d1 bsr.s ice0a bcc.s ice08 lea ice17(pc),a1 moveq #4,d3 ice07: move.l -(a1),d0 bsr.s ice0c swap d0 cmp.w d0,d1 dbne d3,ice07 add.l 20(a1),d1 ice08: move.b -(a5),-(a6) dbra d1,ice08 ice09: cmpa.l a4,a6 bgt.s ice0f rts ice0a: add.b d7,d7 bne.s ice0b move.b -(a5),d7 addx.b d7,d7 ice0b: rts ice0c: moveq #0,d1 ice0d: add.b d7,d7 bne.s ice0e move.b -(a5),d7 MOVE.W D7,$FFFF8240.W addx.b d7,d7 ice0e: addx.w d1,d1 dbra d0,ice0d rts ice0f: lea ice18(pc),a1 moveq #3,d2 ice10: bsr.s ice0a dbcc d2,ice10 moveq #0,d4 moveq #0,d1 move.b 1(a1,d2.w),d0 ext.w d0 bmi.s ice11 bsr.s ice0c ice11: move.b 6(a1,d2.w),d4 add.w d1,d4 beq.s ice13 lea ice19(pc),a1 moveq #1,d2 ice12: bsr.s ice0a dbcc d2,ice12 moveq #0,d1 move.b 1(a1,d2.w),d0 ext.w d0 bsr.s ice0c add.w d2,d2 add.w 6(a1,d2.w),d1 bpl.s ice15 sub.w d4,d1 bra.s ice15 ice13: moveq #0,d1 moveq #5,d0 moveq #-1,d2 bsr.s ice0a bcc.s ice14 moveq #8,d0 moveq #$3f,d2 ice14: bsr.s ice0c add.w d2,d1 ice15: lea 2(a6,d4.w),a1 adda.w d1,a1 move.b -(a1),-(a6) ice16: move.b -(a1),-(a6) dbra d4,ice16 bra ice06 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 ice17: 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 ice18: DC.B $09,$01,$00,$ff,$ff,$08,$04,$02 DC.B $01,$00 ice19: DC.B $0b,$04,$07,$00,$01,$1f,$ff,$ff DC.B $00,$1f STARTOFPACKEDDATA = $50000 DEPACKPOSITION = $50100 ;example of how to call the depack routine LEA STARTOFPACKEDDATA,A6 LEA DEPACKPOSITION,A5 BSR DEPACK CLR.W -(SP) TRAP #1 * LZH DEPACKER; For use with the JAM Packer V3.0 & 4.0 * * USAGE: * LEA $ADDRESS OF PACKED DATA,A5 * LEA $ADDRESS TO UNPACK DATA TO,A6 * BSR DEPACK * * NOTE: Must save registers before executing depack if original * contents are required. RESET MOVEM.W D0-D1/D3/D5,-(A7) MOVEA.L A1,A2 MOVEQ #$00,D2 MOVEQ #-$02,D4 MOVEQ #$00,D1 MOVE.W #$0139,D5 OUTER ADDQ.W #2,D4 CMP.W (A2)+,D7 BHI.S OUTER MOVE.W $00(A3,D4.W),D3 ADDQ.W #1,D3 LSR.W #1,D3 CMP.W -$02(A3,D2.W),D3 BLS.S BIDDLE MOVE.W $00(A3,D1.W),D0 ADD.W $02(A3,D1.W),D0 CMP.W D0,D3 BLS.S BIDDLE BITH MOVE.W D0,$00(A3,D2.W) MOVE.W D1,$00(A1,D2.W) MOVE.W D2,$00(A0,D1.W) MOVE.W D2,$02(A0,D1.W) ADDQ.W #2,D2 ADDQ.L #4,D1 MOVE.W $00(A3,D1.W),D0 ADD.W $02(A3,D1.W),D0 CMP.W D0,D3 BHI.S BITH BIDDLE MOVE.W D3,$00(A3,D2.W) MOVE.W $00(A1,D4.W),D0 MOVE.W D0,$00(A1,D2.W) MOVE.W D2,$00(A0,D0.W) ADDQ.W #2,D2 DBF D5,OUTER MAKETABLE2 MOVE.W $00(A3,D1.W),D0 ADD.W $02(A3,D1.W),D0 MOVE.W D0,$00(A3,D2.W) MOVE.W D1,$00(A1,D2.W) MOVE.W D2,$00(A0,D1.W) MOVE.W D2,$02(A0,D1.W) ADDQ.W #2,D2 ADDQ.L #4,D1 CMP.W D7,D2 BNE.S MAKETABLE2 MOVEM.W (A7)+,D0-D1/D3/D5 RTS CREATE MOVE.L TABLE7(PC),A0 LEA TDATA1(PC),A1 MOVEQ #$00,D0 MOVEQ #$1F,D1 MOVEQ #$00,D2 LOOP1 MOVE.B D0,(A0)+ DBF D1,LOOP1 DBF D2,EXIT1 MOVE.W (A1)+,D3 MOVEQ #$03,D2 EXIT1 ROL.W #4,D3 MOVE.W D3,D1 ANDI.W #$000F,D1 ADDQ.B #4,D0 BCC.S LOOP1 MOVE.L TABLE8(PC),A0 LEA TDATA2(PC),A1 MOVEQ #$05,D0 MOVEQ #$03,D1 LOOP2 MOVE.B $00(A1,D0.W),D2 EXT.W D2 LOOP3 MOVE.B D1,(A0)+ DBF D2,LOOP3 ADDQ.W #1,D1 DBF D0,LOOP2 RTS CREATE2 MOVE.L TABLE1(PC),A0 MOVE.L TABLE5(PC),A1 MOVE.L TABLE4(PC),A2 MOVEQ #$01,D1 MOVE.W #$04E6,D2 MOVEQ #$00,D4 MOVE.W #$0139,D0 CONTINUE MOVE.W D1,(A0)+ MOVE.W D2,(A1)+ MOVE.W D4,(A2)+ ADDQ.W #2,D2 ADDQ.W #2,D4 DBF D0,CONTINUE MOVE.L TABLE1(PC),A0 MOVE.L TABLE2(PC),A3 MOVE.L TABLE6(PC),A1 MOVE.L TABLE3(PC),A2 MOVE.W #$0274,D2 MOVEQ #$00,D4 MOVE.W #$0138,D0 DOMORE MOVE.W (A0)+,D1 ADD.W (A0)+,D1 MOVE.W D1,(A3)+ MOVE.W D4,(A1)+ MOVE.W D2,(A2)+ MOVE.W D2,(A2)+ ADDQ.W #4,D4 ADDQ.W #2,D2 DBF D0,DOMORE MOVE.W #$FFFF,(A3) CLR.W (A2) RTS RESTORE BSR RESET BRA BACK TABLE1 DC.L 00 TABLE2 DC.L 00 TABLE3 DC.L 00 TABLE4 DC.L 00 TABLE5 DC.L 00 TABLE6 DC.L 00 TABLE7 DC.L 00 TABLE8 DC.L 00 EXIT ADDQ.L #4,A7 RTS DEPACK LEA TABLE1(PC),A0 MOVE.L #0,(A0) ;SET UP RELATIVE TABLE OFFSETS MOVE.L #$274,4(A0) MOVE.L #$4E8,8(A0) MOVE.L #$9CE,12(A0) MOVE.L #$C42,16(A0) MOVE.L #$EB6,20(A0) MOVE.L #$112A,24(A0) MOVE.L #$122A,28(A0) MOVE.L A7,D1 ;GET STACK POSITON sub.l #$1500,D1 ;TABLES START ADDRESS IN D1 ;STORE UNDER STACK (NASTY!) MOVE.W #7,D0 TABLOOP ADD.L D1,(A0)+ ;ADD TABLE BASE ADDRESS TO OFFSETS DBF D0,TABLOOP BSR CREATE BSR CREATE2 MOVE.L TABLE3(PC),A0 MOVE.L TABLE5(PC),A1 MOVE.L TABLE1(PC),A3 MOVE.L A6,-(A7) ADD.L 4(A5),A6 ADD.L 8(A5),A5 ADD.L #$0C,A5 MOVE.L A6,A4 MOVE.W #59,D0 ;MOVE 60 SPACES TO END OF UNPACKED AREA SPACES MOVE.B #$20,(A4)+ ;NOTE: SHOULD PROBABLY SAVE THIS AREA DBF D0,SPACES ; BEFORE WIPING IT OUT! MOVEQ #$08,D6 MOVE.B -(A5),D5 MOVE.W #$04E6,D7 MOVE.L TABLE8(PC),A4 TOP MOVE.W #$222,$FFFF8240.W MOVE.W #0,$FFFF8240.W CMPA.L (A7),A6 BLE EXIT MOVE.W $04E4(A1),D0 MORE DBF D6,NOTEMPTY MOVEQ #$07,D6 MOVE.B -(A5),D5 NOTEMPTY ADD.B D5,D5 BCC.S ZERO ADDQ.W #2,D0 ZERO MOVE.W $00(A1,D0.W),D0 CMP.W D7,D0 BLT.S MORE MOVE.W D0,D1 SUB.W D7,D0 MOVE.W $04E4(A3),D4 BMI RESTORE BACK MOVE.W $00(A0,D1.W),D1 SCAN LEA $00(A3,D1.W),A2 ADDQ.W #1,(A2) CMPM.W (A2)+,(A2)+ BCS.S FRSTGTR MOVE.W $00(A0,D1.W),D1 BNE.S SCAN LSR.W #1,D0 CMP.W #$0100,D0 BGE.S GTE256 WRITE MOVE.B D0,-(A6) BRA.S TOP FRSTGTR SUBQ.W #1,-$0004(A2) MOVE.W -$0004(A2),D4 SAME CMP.W (A2)+,D4 BEQ.S SAME SUBQ.L #4,A2 ADDQ.W #1,(A2) SUBA.L A3,A2 MOVE.W $00(A1,D1.W),D4 MOVE.W A2,$00(A0,D4.W) CMP.W D7,D4 BCC.S SKIP MOVE.W A2,$02(A0,D4.W) SKIP MOVE.W $00(A1,A2.W),D2 MOVE.W D4,$00(A1,A2.W) MOVE.W D1,$00(A0,D2.W) CMP.W D7,D2 BCC.S SKIP2 MOVE.W D1,$02(A0,D2.W) SKIP2 MOVE.W D2,$00(A1,D1.W) MOVE.W $00(A0,A2.W),D1 BNE.S SCAN LSR.W #1,D0 CMP.W #$0100,D0 BLT.S WRITE GTE256 MOVE.B -1(A5),D1 MOVEQ #$00,D2 LSR.B D6,D1 OR.B D5,D1 MOVE.B $00(A4,D1.W),D2 SUB.W D2,D6 BPL.S POSITIVE MOVE.B -(A5),D5 MOVE.B D5,D4 ADDQ.W #2,D6 BMI.S OVERFLOW BEQ.S MODD4 LSR.B #1,D4 LSL.B #7,D5 BRA.S MODD4 READONE MOVE.B -(A5),D5 MOVE.B D5,D4 LSL.B #6,D5 MOVEQ #$02,D6 LSR.B D6,D4 BRA.S DOCOPY POSITIVE BEQ.S READONE MOVE.B (A5),D5 SUBQ.W #6,D6 OVERFLOW NEG.W D6 LSL.B D6,D5 MOVE.B D5,D4 MOVE.B -(A5),D5 MOVE.B D5,D2 LSL.B D6,D5 SUBQ.W #8,D6 NEG.W D6 LSR.B D6,D2 OR.B D2,D4 MODD4 ANDI.W #$003F,D4 DOCOPY MOVE.L TABLE7(PC),A0 MOVE.B (A0,D1.W),D2 LSL.W #4,D2 OR.B D4,D2 ;NEG.W D2 LEA $01(A6,D2.W),A0 SUBI.W #$00FE,D0 MOVE.W D0,D1 COPY MOVE.B -(A0),D0 MOVE.B D0,-(A6) DBF D1,COPY MOVE.L TABLE3(PC),A0 BRA TOP TDATA2 DC.W $0F2F DC.W $2F3F DC.W $2F1F TDATA1 DC.W $FFF7 DC.W $7777 DC.W $7773 DC.W $3333 DC.W $3333 DC.W $3331 DC.W $1111 DC.W $1111 DC.W $1111 DC.W $1111 DC.W $1111 DC.W $1110 DC.L $00 DC.L $00 ;LZW Depack routine for the JAM packer V4.0 ;It is kept simple to minimise depack time. CLR.L -(A7) MOVE.W #$20,-(A7) TRAP #1 ADDQ.L #6,A7 MOVE.L D0,-(A7) MOVE.L #$80000,A0 ;start of packed data address MOVE.L #$90000,A1 ;depack to address BSR.S UNPACK MOVE.W #$20,-(A7) TRAP #1 ADDQ.L #6,A7 RTS UNPACK: MOVE.W $FFFF8240.W,-(A7) MOVE.L A0,A4 MOVE.L A1,A6 ADDA.L 8(A0),A4 ADDA.L 4(A0),A6 MOVE.L A6,A5 ;KEEP COPY TO CHECK AGAINST MOVE.L 4(A0),D4 MOVE.B #$20,D3 MOVE.W #$0FED,D5 MOVEA.L A6,A3 ;KEEP ADDR OF END OF SPACES MOVEQ #$00,D7 ;START UNPACK ROUTINE TOPDEP: DBF D7,NOTUSED MOVE.B -(A4),D6 ;GET COMMAND BYTE MOVEQ #$07,D7 NOTUSED: LSR.B #1,D6 BCC.S COPY ;BIT NOT SET, COPY FROM UNPACKED AREA MOVE.B -(A4),-(A6) ;COPY BYTES FROM PACKED AREA ADDQ.W #1,D5 SUBQ.L #1,D4 BGT.S TOPDEP BRA.S EXITUP COPY: MOVE.B -2(A4),D0 LSL.W #4,D0 MOVE.B -(A4),D0 MOVE.W D0,$FFFF8240.W SUB.W D5,D0 NEG.W D0 AND.W #$0FFF,D0 LEA 1(A6,D0.W),A0 MOVEQ #$0F,D1 AND.B -(A4),D1 ADDQ.W #2,D1 MOVEQ #$01,D0 ADD.W D1,D0 CMPA.L A5,A0 BGT.S SPACES WRITE: MOVE.B -(A0),-(A6) DBF D1,WRITE BACK: ADD.L D0,D5 SUB.L D0,D4 BGT.S TOPDEP EXITUP: MOVE.W (A7)+,$FFFF8240.W RTS SPACES: CMPA.L A5,A0 BLE.S WRITE MOVE.B D3,-(A6) ;COPY OUT SPACES SUBQ.L #1,A0 DBF D1,SPACES BRA.S BACK ;V2 Depack routine for JAM Packer V2.X/3.0/4.0 DEPACK: ADDA.L #$4,A0 ;ALLOW FOR HEADER MOVE.W #$FE,D7 MOVE.L A0,A6 MOVE.L (A0)+,D5 ADDA.L D5,A1 ADDA.L (A0),A0 SUBA.L #4,A0 TST.W -(A0) BPL.S SKIP SUBQ.L #1,A0 SKIP MOVE.B -(A0),D0 TOP ROL.W D7 MOVE.W D7,$FFFF8240.W LSL.B #1,D0 BNE.S NOTE MOVE.B -(A0),D0 ROXL.B #1,D0 NOTE BCC.S SHEP CLR.W D1 LSL.B #1,D0 BNE.S KLF MOVE.B -(A0),D0 ROXL.B #1,D0 KLF BCC.S PET LEA TABL1(PC),A3 MOVEQ #3,D3 STE CLR.W D1 MOVE.B 0(A3,D3.W),D2 EXT.W D2 MOVEQ #-1,D4 LSL.W D2,D4 NOT.W D4 SUBQ.W #1,D2 ARJ LSL.B #1,D0 BNE.S BOYS MOVE.B -(A0),D0 ROXL.B #1,D0 BOYS ROXL.W #1,D1 DBF D2,ARJ TST.W D3 BEQ.S SHOP CMP.W D1,D4 DBNE D3,STE SHOP MOVE.B 4(A3,D3.W),D2 EXT.W D2 ADD.W D2,D1 PET MOVE.B -(A0),-(A1) DBF D1,PET SHEP MOVE.L A6,A3 ADDQ.L #$8,A3 CMPA.L A3,A0 BLE EXIT LEA TABL2(PC),A3 MOVEQ #3,D2 CATHY LSL.B #1,D0 BNE.S ALSA MOVE.B -(A0),D0 ROXL.B #1,D0 ALSA BCC.S FDC DBF D2,CATHY FDC CLR.W D1 ADDQ.W #1,D2 MOVE.B 0(A3,D2.W),D3 BEQ.S VAN EXT.W D3 SUBQ.W #1,D3 DE LSL.B #1,D0 BNE.S VEN MOVE.B -(A0),D0 ROXL.B #1,D0 VEN ROXL.W #1,D1 DBF D3,DE VAN MOVE.B 5(A3,D2.W),D3 EXT.W D3 ADD.W D3,D1 CMPI.W #2,D1 BEQ.S MFD LEA TABL3(PC),A3 MOVEQ #1,D3 LUC LSL.B #1,D0 BNE.S CML MOVE.B -(A0),D0 ROXL.B #1,D0 CML BCC.S BBS DBF D3,LUC BBS ADDQ.W #1,D3 CLR.W D2 MOVE.B 0(A3,D3.W),D4 EXT.W D4 MCH LSL.B #1,D0 BNE.S SAW MOVE.B -(A0),D0 ROXL.B #1,D0 SAW ROXL.W #1,D2 DBF D4,MCH LSL.W #1,D3 ADD.W 4(A3,D3.W),D2 BRA.S CPUN MFD CLR.W D2 MOVEQ #5,D3 CLR.W D4 LSL.B #1,D0 BNE.S EMF MOVE.B -(A0),D0 ROXL.B #1,D0 EMF BCC.S CLR1 MOVEQ #8,D3 MOVEQ #$40,D4 CLR1 LSL.B #1,D0 BNE.S NOTZ MOVE.B -(A0),D0 ROXL.B #1,D0 NOTZ ROXL.W #1,D2 DBF D3,CLR1 ADD.W D4,D2 CPUN LEA 0(A1,D2.W),A2 EXT.L D1 ADDA.L D1,A2 SUBQ.W #1,D1 WRTLP MOVE.B -(A2),-(A1) DBF D1,WRTLP BRA TOP EXIT RTS TABL1 DC.B $0A,$03,$02,$02,$0E,$07,$04,$01 TABL2 DC.B $0A,$02,$01,$00,$00,$0A,$06,$04,$03,$02 TABL3 DC.B $0B,$04,$07,$00,$01,$20,$00,$00 DC.B $00,$20 ; ; New Trap #1 Loader for JAM v4.0 LZH packer by IWWWTTI - 14/1/1992 ; ----------------------------------------------------------------- ; ; For internal use by Source members ONLY (for now !!) ; ; WILL ONLY WORK ON FILES WHICH ARE COMPLETELY READ BY ONE CALL TO ; FREAD (TRAP #1 #$3F). ; savebuf = $200 yes equ 1 no equ 0 LSEEKROUTINE EQU yes ;WHEN PROG USES LSEEK TO DETERMINE FILE LENGTH SFIRSTROUTINE EQU no ;WHEN PROG USES SFIRST TO DETERMINE FILE LENGTH text_on equ yes waitkey equ yes quit_gem equ yes lowres equ no flash equ yes meg_only equ no ; If yes then program needs 1 MEGABYTE bell_off equ no begin bra start dc.b "MUG U.K Packed Program - Piss Off Ripper !!" even fname dc.b 'infiltrt.exe',$00 even text dc.b 27,"E" dc.b 27,"p","MUG U.K (of The Source)",27,"q",13,10 dc.b "------------------------",13,10,10 dc.b "Presents: Infiltration",13,10,10 dc.b "by: Paul Dowers",13,10,10 dc.b "Packed by: MUG U.K",13,10,10 dc.b "Get your grey matter working on this",13,10 dc.b "3D Construction Kit game !!",13,10,10 dc.b "Press any key to load !!",13,10,10 dc.b 0 start movea.l a7,a5 lea begin(pc),a7 move.l 4(a5),a5 move.l $C(a5),d0 add.l $14(a5),d0 add.l $1C(a5),d0 add.l #$100,d0 move.l d0,-(a7) move.l a5,-(a7) clr.w -(a7) ; was move.w #$0,-(a7) move.w #$4a,-(a7) trap #1 adda.l #12,a7 clr.l -(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp move.l d0,d7 move.l #$1600,-(sp) ; reserve space for LZH Depack Tables move.w #$48,-(sp) trap #1 addq.l #6,sp move.l d0,BUFPOS ifne bell_off ; for programs that need the bclr #0,$484.w ; bell turning off endc ; ; Has user only got 512K ???? ; ifne meg_only move.l $42e,d0 ; Top of user RAM cmp.l #$00080000,d0 ; if it equals $80000 beq.s half_meg ; then get an upgrade !! endc move.l $84.W,oldtrap1vector move.l #trapit,$84.W move.l d7,-(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp ifne lowres clr.w -(sp) pea -1 pea -1 move.w #5,-(sp) trap #14 lea $c(a7),a7 endc ifne text_on pea text(pc) move.w #9,-(sp) trap #1 addq.l #6,sp endc ifne waitkey move.w #7,-(sp) trap #1 addq.l #2,sp endc move.l #null,-(sp) move.l #null,-(sp) pea fname(pc) move.w #0,-(sp) move.w #$4b,-(sp) trap #1 add.l #14,sp tst.l d0 ;ENSURE THAT YOU CAN QUIT OUT OF PROGRAMS WITHOUT A CRASH ifne quit_gem quit clr.l -(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp move.l oldtrap1vector(pc),$84.w move.l d0,-(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp ifne bell_off bset #0,$484.w endc move.w #$4c,-(sp) trap #1 elseif quit move.w $4.w,a0 jmp (a0) endc ; ; Trap 512K owners when program requires 1 Meg+ to run !! ; ifne meg_only half_meg pea more_mem(pc) move.w #9,-(sp) trap #1 addq.l #6,sp move.w #7,-(sp) trap #1 addq.l #2,sp move.w #$4c,-(sp) trap #1 more_mem dc.b 27,"E" dc.b "NOT ENOUGH MEMORY !!",13,10 dc.b "--------------------",13,10,10 dc.b "You require 1 megabyte or",13,10 dc.b "more to run this program !",13,10,10 dc.b "Press any key !!",13,10 dc.b 0 even endc trapit: btst #$05,(a7) bne.s super move.l usp,a0 bra.s after super: move.l a7,a0 addq.l #6,a0 after: cmp.w #$3d,(a0) beq doopen cmp.w #$3f,(a0) beq.s load IFNE LSEEKROUTINE cmp.w #$42,(a0) beq.s down ENDC IFNE SFIRSTROUTINE cmp.w #$4e,(a0) beq.s dosfirst cmp.w #$2f,(a0) beq.s dogetdta cmp.w #$1a,(a0) ENDC bne dotrap1 IFNE SFIRSTROUTINE lea retsetdta(pc),a0 move.l 2(a7),(a0) lea setdta(pc),a0 move.l a0,2(a7) bra dotrap1 dogetdta: lea retgetdta(pc),a0 move.l 2(a7),(a0) lea getdta(pc),a0 move.l a0,2(a7) bra dotrap1 ENDC doopen: lea retopen(pc),a0 move.l 2(a7),(a0) lea open(pc),a0 move.l a0,2(a7) bra dotrap1 ;here starts the stuff for SFIRST IFNE SFIRSTROUTINE dosfirst: lea retsfirst(pc),a0 move.l 2(a7),(a0) lea sfirst(pc),a0 move.l a0,2(a7) bra.s dotrap1 ENDC ;here start the stuff for LSEEK IFNE LSEEKROUTINE down: lea retlseek(pc),a0 move.l 2(a7),(a0) lea lseek(pc),a0 move.l a0,2(a7) bra.s dotrap1 ENDC load: move.w inopen(pc),d0 cmp.w #1,d0 beq.s dotrap1 ;if checking depack marker, do real trap1! move.w seekflag(pc),d0 cmp.w #1,d0 beq.s dotrap1 ;if called from seek handler, exit! move.w mustdpak(pc),d0 cmp.w #1,d0 bne.s dotrap1 ;if marker not present, don't decrunch! move.l a7,d0 movem.l a1-a3,-(sp) sub.l #$20,8(a0) lea buffer(pc),a1 move.l 8(a0),(a1) move.l d0,a2 lea return(pc),a1 move.l 2(a2),(a1) lea unpack(pc),a1 move.l a1,2(a2) move.l buffer(pc),a1 lea savebuf,a2 move.l #$20,a3 loadloop: move.b (a1)+,(a2)+ subq.l #1,a3 cmp.l #0,a3 bne.s loadloop movem.l (sp)+,a1-a3 dotrap1: dc.w $4ef9 oldtrap1vector: dc.l $00 ;************************** open: tst.l d0 bmi exitopen2 movem.l a1-a3,-(sp) move.l d0,a3 lea inopen(pc),a1 move.w #1,(a1) pea test(pc) move.l #8,-(sp) move.w a3,-(sp) move.w #$3f,-(sp) trap #1 add.l #12,sp tst.l d0 ;ADDED TO FIX ZERO LENGTH FILE beq.s notcrun ;DITTO move.l magic(pc),d0 cmp.l test(pc),d0 bne.s notcrun lea mustdpak(pc),a1 move.w #1,(a1) bra.s skipit notcrun: lea mustdpak(pc),a1 move.w #0,(a1) skipit: move.w #1,-(sp) move.w a3,-(sp) move.l #-8,-(sp) move.w #$42,-(sp) trap #1 add.l #10,sp move.l a3,d0 exitopen: lea inopen(pc),a1 move.w #0,(a1) movem.l (sp)+,a1-a3 exitopen2 dc.w $4ef9 retopen dc.l $00 inopen dc.w 0 test dc.l 0 unpaklen dc.l 0 mustdpak dc.w 0 magic dc.b 'LZH!' IFNE SFIRSTROUTINE ;*************************** getdta: lea dta(pc),a0 move.l d0,(a0) dc.w $4ef9 retgetdta dc.l $00 ;**************************** setdta: lea dta(pc),a0 move.l 2(a7),(a0) dc.w $4ef9 retsetdta dc.l $00 ;*********************************** FOR $4E (SFIRST) sfirst: tst.l d0 bne pissoff move.l 2(a7),a0 movem.l a1-a3,-(sp) move.w #$2,-(sp) move.l a0,-(sp) move.w #$3d,-(sp) trap #1 addq.l #8,sp lea sfirsthandle(pc),a1 move.w d0,(a1) move.w mustdpak(pc),d0 cmp.w #1,d0 beq.s change bra.s afterchange change: move.l dta(pc),a0 add.l #26,a0 move.l unpaklen(pc),d0 move.l d0,(a0) afterchange: move.w sfirsthandle(pc),-(sp) move.w #$3e,-(sp) trap #1 addq.l #4,sp movem.l (sp)+,a1-a3 pissoff: dc.w $4ef9 retsfirst: ;exit dc.l $00 ENDC ;*********************************** FOR $42 (LSEEK) IN TRAP1 IFNE LSEEKROUTINE lseek: cmp.w #2,8(a7) bne vamos3 cmp.l #0,2(a7) bne vamos3 lea seekhandle(pc),a0 move.w 6(a7),(a0) lea sd0save(pc),a0 move.l d0,(a0) move.w mustdpak(pc),d0 cmp.w #1,d0 bne.s vamos move.l unpaklen(pc),d0 bra.s vamos3 vamos: move.l sd0save(pc),d0 vamos3: dc.w $4ef9 retlseek: ;exit dc.l $00 ENDC ;************************************ FOR $3F (READ) IN TRAP1 unpack: ;a0 - start of crunched data ;a1 - beginning of uncrunching area movem.l d0-d7/a0-a6,-(sp) move.l buffer(pc),a0 lea origlen(pc),a1 move.l 4(a0),(a1) move sr,d1 btst #13,d1 bne nochange clr.l -(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp lea jek(pc),a6 move.l d0,(a6) lea mode(pc),a1 move.w #1,(a1) ;1 denotes must return to user mode nochange: lea colstore(pc),a1 move.w $fff8240,(a1) move.l buffer(pc),a0 move.l a0,a1 add.l #$20,a1 BSR DEPACK move.w colstore(pc),$fff8240 ;restore memory saved in buffer move.l buffer(pc),a1 lea savebuf,a2 move.l #$20,a3 loadloop2: move.b (a2)+,(a1)+ subq.l #1,a3 cmp.l #0,a3 bne.s loadloop2 move.w mode(pc),d0 cmp.w #1,d0 bne nochange2 move.l jek(pc),-(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp nochange2: lea mode(pc),a1 move.w #$00,(a1) movem.l (sp)+,d0-d7/a0-a6 move.l origlen(pc),d0 dc.w $4ef9 return: ;exit decrunch module dc.l $00 ;-------------------------------------------------------------------- * LZH DEPACKER For use with the JAM Packer V3.0/V4.0 * * USAGE: * LEA $ADDRESS OF PACKED DATA,A0 * LEA $ADDRESS TO UNPACK DATA TO,A1 * BSR DEPACK * * NOTE: Must save registers before executing depack if original * contents are required. RESET MOVEM.W D0-D1/D3/D5,-(A7) MOVEA.L A1,A2 MOVEQ #$00,D2 MOVEQ #-$02,D4 MOVEQ #$00,D1 MOVE.W #$0139,D5 OUTER ADDQ.W #2,D4 CMP.W (A2)+,D7 BHI.S OUTER MOVE.W $00(A3,D4.W),D3 ADDQ.W #1,D3 LSR.W #1,D3 CMP.W -$02(A3,D2.W),D3 BLS.S BIDDLE MOVE.W $00(A3,D1.W),D0 ADD.W $02(A3,D1.W),D0 CMP.W D0,D3 BLS.S BIDDLE BITH MOVE.W D0,$00(A3,D2.W) MOVE.W D1,$00(A1,D2.W) MOVE.W D2,$00(A0,D1.W) MOVE.W D2,$02(A0,D1.W) ADDQ.W #2,D2 ADDQ.L #4,D1 MOVE.W $00(A3,D1.W),D0 ADD.W $02(A3,D1.W),D0 CMP.W D0,D3 BHI.S BITH BIDDLE MOVE.W D3,$00(A3,D2.W) MOVE.W $00(A1,D4.W),D0 MOVE.W D0,$00(A1,D2.W) MOVE.W D2,$00(A0,D0.W) ADDQ.W #2,D2 DBF D5,OUTER MAKETABLE2 MOVE.W $00(A3,D1.W),D0 ADD.W $02(A3,D1.W),D0 MOVE.W D0,$00(A3,D2.W) MOVE.W D1,$00(A1,D2.W) MOVE.W D2,$00(A0,D1.W) MOVE.W D2,$02(A0,D1.W) ADDQ.W #2,D2 ADDQ.L #4,D1 CMP.W D7,D2 BNE.S MAKETABLE2 MOVEM.W (A7)+,D0-D1/D3/D5 RTS CREATE MOVE.L TABLE7(PC),A0 LEA TDATA1(PC),A1 MOVEQ #$00,D0 MOVEQ #$1F,D1 MOVEQ #$00,D2 LOOP1 MOVE.B D0,(A0)+ DBF D1,LOOP1 DBF D2,EXIT1 MOVE.W (A1)+,D3 MOVEQ #$03,D2 EXIT1 ROL.W #4,D3 MOVE.W D3,D1 ANDI.W #$000F,D1 ADDQ.B #4,D0 BCC.S LOOP1 MOVE.L TABLE8(PC),A0 LEA TDATA2(PC),A1 MOVEQ #$05,D0 MOVEQ #$03,D1 LOOP2 MOVE.B $00(A1,D0.W),D2 EXT.W D2 LOOP3 MOVE.B D1,(A0)+ DBF D2,LOOP3 ADDQ.W #1,D1 DBF D0,LOOP2 RTS CREATE2 MOVE.L TABLE1(PC),A0 MOVE.L TABLE5(PC),A1 MOVE.L TABLE4(PC),A2 MOVEQ #$01,D1 MOVE.W #$04E6,D2 MOVEQ #$00,D4 MOVE.W #$0139,D0 CONTINUE MOVE.W D1,(A0)+ MOVE.W D2,(A1)+ MOVE.W D4,(A2)+ ADDQ.W #2,D2 ADDQ.W #2,D4 DBF D0,CONTINUE MOVE.L TABLE1(PC),A0 MOVE.L TABLE2(PC),A3 MOVE.L TABLE6(PC),A1 MOVE.L TABLE3(PC),A2 MOVE.W #$0274,D2 MOVEQ #$00,D4 MOVE.W #$0138,D0 DOMORE MOVE.W (A0)+,D1 ADD.W (A0)+,D1 MOVE.W D1,(A3)+ MOVE.W D4,(A1)+ MOVE.W D2,(A2)+ MOVE.W D2,(A2)+ ADDQ.W #4,D4 ADDQ.W #2,D2 DBF D0,DOMORE MOVE.W #$FFFF,(A3) CLR.W (A2) RTS RESTORE BSR RESET BRA BACK TABLE1 DC.L 00 TABLE2 DC.L 00 TABLE3 DC.L 00 TABLE4 DC.L 00 TABLE5 DC.L 00 TABLE6 DC.L 00 TABLE7 DC.L 00 TABLE8 DC.L 00 BUFPOS: DC.L 00 EXIT ADDQ.L #4,A7 RTS DEPACK MOVE.L A0,A5 MOVE.L A1,A6 LEA TABLE1(PC),A0 MOVE.L #0,(A0) ;SET UP RELATIVE TABLE OFFSETS MOVE.L #$274,4(A0) MOVE.L #$4E8,8(A0) MOVE.L #$9CE,12(A0) MOVE.L #$C42,16(A0) MOVE.L #$EB6,20(A0) MOVE.L #$112A,24(A0) MOVE.L #$122A,28(A0) MOVE.L BUFPOS(PC),D1 TST.L D1 BNE.S DONTUSESCREEN USESCREEN: MOVE.B $FFFF8201.W,D6 MOVE.B $FFFF8203.W,D7 LSL.L #8,D6 MOVE.B D7,D6 LSL.L #8,D6 MOVE.L D6,D1 DONTUSESCREEN: ; MOVE.L A7,D1 ;GET STACK POSITON ; sub.l #$1500,D1 ;TABLES START ADDRESS IN D1 ;STORE UNDER STACK MOVE.W #7,D0 TABLOOP ADD.L D1,(A0)+ ;ADD TABLE BASE ADDRESS TO OFFSETS DBF D0,TABLOOP BSR CREATE BSR CREATE2 MOVE.L TABLE3(PC),A0 MOVE.L TABLE5(PC),A1 MOVE.L TABLE1(PC),A3 MOVE.L A6,-(A7) ADD.L 4(A5),A6 ADD.L 8(A5),A5 ADD.L #$0C,A5 MOVE.L A6,A4 ;THIS IS REQUIRED! MOVE.W #59,D0 ;MOVE 60 SPACES TO END OF UNPACKED AREA SPACES MOVE.B #$20,(A4)+ ;NOTE: SHOULD PROBABLY SAVE THIS DATA DBF D0,SPACES ; BEFORE WIPING IT OUT! MOVEQ #$08,D6 MOVE.B -(A5),D5 MOVE.W #$04E6,D7 MOVE.L TABLE8(PC),A4 TOP NOT.W $FFFF8240.W CMPA.L (A7),A6 BLE EXIT MOVE.W $04E4(A1),D0 MORE DBF D6,NOTEMPTY MOVEQ #$07,D6 MOVE.B -(A5),D5 NOTEMPTY ADD.B D5,D5 BCC.S ZERO ADDQ.W #2,D0 ZERO MOVE.W $00(A1,D0.W),D0 CMP.W D7,D0 BLT.S MORE MOVE.W D0,D1 SUB.W D7,D0 MOVE.W $04E4(A3),D4 BMI RESTORE BACK MOVE.W $00(A0,D1.W),D1 SCAN LEA $00(A3,D1.W),A2 ADDQ.W #1,(A2) CMPM.W (A2)+,(A2)+ BCS.S FRSTGTR MOVE.W $00(A0,D1.W),D1 BNE.S SCAN LSR.W #1,D0 CMP.W #$0100,D0 BGE.S GTE256 WRITE MOVE.B D0,-(A6) BRA.S TOP FRSTGTR SUBQ.W #1,-$0004(A2) MOVE.W -$0004(A2),D4 SAME CMP.W (A2)+,D4 BEQ.S SAME SUBQ.L #4,A2 ADDQ.W #1,(A2) SUBA.L A3,A2 MOVE.W $00(A1,D1.W),D4 MOVE.W A2,$00(A0,D4.W) CMP.W D7,D4 BCC.S SKIP MOVE.W A2,$02(A0,D4.W) SKIP MOVE.W $00(A1,A2.W),D2 MOVE.W D4,$00(A1,A2.W) MOVE.W D1,$00(A0,D2.W) CMP.W D7,D2 BCC.S SKIP2 MOVE.W D1,$02(A0,D2.W) SKIP2 MOVE.W D2,$00(A1,D1.W) MOVE.W $00(A0,A2.W),D1 BNE.S SCAN LSR.W #1,D0 CMP.W #$0100,D0 BLT.S WRITE GTE256 MOVE.B -1(A5),D1 MOVEQ #$00,D2 LSR.B D6,D1 OR.B D5,D1 MOVE.B $00(A4,D1.W),D2 SUB.W D2,D6 BPL.S POSITIVE MOVE.B -(A5),D5 MOVE.B D5,D4 ADDQ.W #2,D6 BMI.S OVERFLOW BEQ.S MODD4 LSR.B #1,D4 LSL.B #7,D5 BRA.S MODD4 READONE MOVE.B -(A5),D5 MOVE.B D5,D4 LSL.B #6,D5 MOVEQ #$02,D6 LSR.B D6,D4 BRA.S DOCOPY POSITIVE BEQ.S READONE MOVE.B (A5),D5 SUBQ.W #6,D6 OVERFLOW NEG.W D6 LSL.B D6,D5 MOVE.B D5,D4 MOVE.B -(A5),D5 MOVE.B D5,D2 LSL.B D6,D5 SUBQ.W #8,D6 NEG.W D6 LSR.B D6,D2 OR.B D2,D4 MODD4 ANDI.W #$003F,D4 DOCOPY MOVE.L TABLE7(PC),A0 MOVE.B (A0,D1.W),D2 LSL.W #4,D2 OR.B D4,D2 ;NEG.W D2 LEA $01(A6,D2.W),A0 SUBI.W #$00FE,D0 MOVE.W D0,D1 COPY MOVE.B -(A0),D0 MOVE.B D0,-(A6) DBF D1,COPY MOVE.L TABLE3(PC),A0 BRA TOP TDATA2 DC.W $0F2F DC.W $2F3F DC.W $2F1F TDATA1 DC.W $FFF7 DC.W $7777 DC.W $7773 DC.W $3333 DC.W $3333 DC.W $3331 DC.W $1111 DC.W $1111 DC.W $1111 DC.W $1111 DC.W $1111 DC.W $1110 DC.L $00 DC.L $00 ;-------------------------------------------------------------------- dc.b "!K.U GUM" SECTION DATA origlen: dc.l $00 oldssp: dc.l $00 buffer: dc.l $00 mode: dc.l $00 jek: dc.l $00 length: dc.l $00 colstore: dc.l $00 seekflag: dc.w $00 seekhandle: dc.w $00 sd0save: dc.l $00 rtlseeksav: dc.l $00 sfirsthandle: dc.l $00 dta: dc.l $00 oldsize: dc.l $00 null: DC.L $00 +---------------------+ | THE JAM PACKER V4.0 | +---------------------+ Release Date: 17.06.1991 The JAM Packer is an executable/datafile and whole disk compression program. A full GEM user interface provides convenient and user-friendly operation. +------------------------+ | OPERATING INSTRUCTIONS | +------------------------+ PACK METHOD ----------- Four compression methods are implemented. LZH - This is a modified version of the method used in the first Lharc series. LZH provides reasonably fast and very efficient compression, though it does take longer to uncompress than any other method available in the JAM packer. LZW - This method provides fast and reasonably efficient compression. It has the fastest decompression speed. It is ideally suited for when fast de-compression speed is more important than smaller compressed file size (eg. on a hard disk). V2 - Compresses very slowly, but de-compression speed is much better than LZH. It can also compress files smaller than LZW, but not quite as good as LZH. Since the introduction of the ICE pack method into the JAM packer, V2 is essentially redundant. In a future upgrade it will be removed and replaced by something much better. ICE - This method is used in the Pack-Ice packer and is based on V2, though it slightly improves on V2 in both time taken to compress, time taken to de-compress and compressed file size. FILE PACKER ----------- PROGRAM/DATA Two types of files can be packed. "Data" files are simply compressed. "Program" files are compressed and the necessary code to de-compress and run them is included in the file. FLASH/HEADING If a Program file is packed, then you can choose whether or not the screen will "Flash" when unpacking and whether or not the "Heading" will appear when the file unpacks. NOTE: Packing resource, data, dictionary, help or any other support files for a program will cause that program to fail. If you think about it, this obviously cannot work as the program using these files has no idea they're packed or how to unpack them! Also note that program files may not decompress and run properly from some shells (notably the Laser C shell). ABORTING A PACK --------------- Holding down the ALTERNATE key during a pack will cause it to be aborted. You are not given the option of resuming, so make sure that when you hold down ALTERNATE, you really do want to stop the current pack. This option also works when in the "Disk Packer", though only when data is being packed, not when reading or writing to the disk. DISK PACKER ----------- This option has been updated significantly since V3.0 and now works properly. The "Disk Packer" reads in a whole disk and packs it into a single file. This is useful for transmission of entire disks via modem and archival purposes among other things. You can choose either of the four pack methods to be used during the disk pack, or alternatively you can choose no compression from the "Disk Packer" box. USE BOOT If the "use boot" box is selected, the format of the disk is read from the boot sector. Only use this option if you are absolutely sure that the disk has a valid boot sector, otherwise the results will be unpredictable. If the "use boot" option is not selected, the JAM packer attempts to determine the format of the disk by itself. There is no guarantee that it will get it right, though if any mistake is made, it will be to pack too much data, rather than not enough. USE FAT If this option is selected, it is only active if the "use boot" box is selected. It ensures that data clusters which are allocated by the FAT (File Allocation Table) are the only data packed. This is useful if you have deleted files from a disk, as although deleted, the data will remain on the disk until over-written by another file. FORMAT This is used during a disk unpack only. If the "format" box is highlighted, the disk will be formatted to the appropriate format before data is written to it. Note: 11 sector format is not supported, so if you have disk packed an 11 sector a track disk, make sure you have formatted the destination disk 11 sectors a track with a program such as Fastcopy III. NO PACK Select this option when you want a fast conversion of a floppy disk into a file. No compression is used, the data from the disk is just copied into a file. MULTI-PACKER ------------ The "Multi-Packer" is a handy feature when a large number of files need to be packed. Wildcards are supported. Choose your source directory and type in the file name template to be used. Eg. "*.*" will pack all programs in the selected directory; "*.DAT" will pack all programs with a ".DAT" extension. PACK PROGRAMS If the "Program" button is selected then files with the extender ".TOS", ".TTP", ".PRG" or ".APP" will be packed as programs (executables which will uncompress and run), as if they were selected individually from the normal pack box as "Program" files. Otherwise, they will be packed as data files, which will not automatically uncompress and run. The packed files overwrite the original files. +---------------------------------+ | FILES CONTAINED IN THIS PACKAGE | +---------------------------------+ JAMPACK4.PRG - The JAM packer program. JAMPACK4.DOC - What you are reading now. DEPV2.S - Assembly depack source code for V2. DEPICE.S - Assembly depack source code for ICE. DEPLZW.S - Assembly depack source code for LZW. DEPLZH.S - Assembly depack source code for LZH. LDRUNLZH.S - Trap #1 file load/depacker. +------------+ | DISCLAIMER | +------------+ We take no responsibilty for any damage which may arise from the use or misuse of this program. +---------+ | LICENSE | +---------+ You may make copies and distribute this program, as long as the program and documentation file remain unchanged, and no profit is obtained. This program is shareware. If you find it useful, please send us something, be it money or words of encouragement, it doesn't matter. Bug reports and suggestions for improvement are also welcome. Write to us at either of the following addresses. +-----------------+ +-----------------------+ | Andrew Knipe | | Tim Knipe | | P.O. Box 369 | | RSD Maiden Gully Road | | 367 Collins St. | | Bendigo, 3551 | | Melbourne, 3000 | | Victoria | | AUSTRALIA | | AUSTRALIA | +-----------------+ +-----------------------+ | /+\ |O| /---\ /_____\ .. * . . * . . . . `lkFH?<NNT/$@?<NNT2<<g2<gBQC|<<f|(Hz?< NA\B?< NA\/?8@A"H/(a,_1߂@?< NA\G"K kK^ JgёBJAg<f``+k +k+k  -"- Ҁ+A -Ҁ+A м$@*@t_CQ"KA$HNM@,$$$$ٵoC&i")n"<BBBBSlLBN(H,I*N((< :<&N~Q$~d $RESn`2,H$1@ED@|Ar$TApAn QڀnNuoSQ`jY JAM Packer Decrunch V4.0kLZW!l`Q zeWQK୛ң:J$f(BhO@aQ]bxA\OJg.@Q]`6 - PdЭпѣ"{ҍ¼.A// "zJNA #Q- !\/( h3Jn02cPd NXpEfqsCwCAUAA ]#oFLJH@B:FLbH@@<#FLH@B:6)‚=|i`Bnr3US1QS63Uc1QcS‚ Uk`+ByQk0:@ 4N@ M`P@ 3u16hB?QA 4H@ M#1OTH l aApX7?80e?)AO\񊦝P7X.ANFT%o] yS[f#N-yQ[` TS U[+hC/\?9Q[NW@`&X,\uCb:"֘A)|ʦ5>̾m¢ SnƮϪjޤ@(9QSg"S`Bgϣŗ㑃Ń S#. Q}5:8Aah:$` S@Pc@ |"|`S0(RÁI/2?^wsF4 ,:/QIWPCW 2:I!a# cPuﵰ0nfr@`Fo]R?-ךL E߹ߧךRweSFؾ2 XA͐:7CBgSN`'o^/(\ Ww `:`8pK:PgPXPgPgTP P0uQt(wG=CWwIWb.PAI R*h\ Cѹl #јo`uo o# o 貢/ H dom Rg`  | ] T9j?$\$ !N%'$CWeL ̨X5HyfpY¢8@sJ@fF/csTʧjgNcs&@IgdL. Ӯn&Is T=cspnRfh/<35`s [D n`_g:YK>9`60I`pœ;L` Rg:8N?2{Hy>N`-@ 5*ʟʂ.bJ*Z`:瀞Bl їw6 f,bJK)qq0#q!2:4Op95Jnf`:!u>sP \vt@B(/?"P0zr`oS5#oo|gooy<H/,/,S<0h |S?'$C/jvKN3BBgؼ`oBn(ZPo3+(Q[L0&v/d/cN/9/'/QzSi%-'/ \A%$"m"(G?rHgBnQl00Z1QRG G m= @tR=@~x@Hv hx)3z/;fRW'3T1bNv[BX!8' |X!!A)=|? rl !+(0QPvH !_ ' C[_ ycjZf0<`0_BE8<zGf1PR<<'`H0Fm&Pn02HA2 0ƞ@BD`0f0RE PK <JFnPP B0PK|S6PHyHyHyY1 j"%YOj9OyKhP:_s@f?QbBg7Bg ԰hIU?,p0@ G"FE0$ma((μ.1@$qwN^qg*OĔ0p,oxloooooozohoVoDk5o#^.u,@*(gAv /8&//4/8F!ư*Ő,@݀1}àX0qʰ6̻o`.# }!W29Vh$ P1(|qo*XjqwA (((հ((((U(!/:p:h lLnNu NMXf&RL< x௰g =`LXpNuqoqoڐE/"PBE|a1Qr$80f2HB@CI&Ifb bR@ @fxo11LRAGW@2?A Ao.b avj]j` @?bada0!jz?A0PGfbREa< ǐA dRI2 x !I!Y!|Xߜ 8Nu`vcxsoHr_EBD``l`vK8`K4`YDgK6308Kri@D`@2`?o A@x `.8<`(`X08z,`D\D3PHriESD@QBG|`Nu a%     ~YH?Ā$@NT2<<2<gBaGC<{ f|(Hzt"BA5[8@Az"H–(a,_1߂A NA\GXׂ"K DrK^ sJgёBJAgf``+k+k+k -- r -Ҁ+A3$@*@t_ٰ"KA$HNM@,s$ٵoC&i")7n"sBSolLBNo><rW,H*БKJ`jS _flHBAfl6`vBAaxlFDSBgaJCgAV30HB aG&NPo0M`tgkBARB`gHSCf^QaY3 H_C A4G~vgkaYRCBB30Hh\KԿs0`$BBvBDe_dvx@f RQDE HSA"Q`Nu  P   ajY JAM Packer Decrunch V4.0k Vɫ6I3qz/$0@IKrNC^$ng<%Ќ`#_4 cP.b4`0PW@ n_ B0QAec_AMOOOo`^Pp HQcE}EA EuP?e}Hn/.coay#PO)+dz6JIg8(TBn#! 2>@);2b);p2=a?a?]y΄@ 5 @n?2(<2);%WDU00Q2y,2,1MU(P09I}@@Tj1H1ĔRX'W@LHg$?!&9HЮCjMJ@fncٔ=|lCP~C 6o>D} XQrf`(vdr)|pPXLa5)XR} Pмel 1 nu 3(LBg%B9 )}PB@G% $0$3E. P߳B,/<nZ0Po0ѩ]@WB€0Z\(a"qap`@ .?q09(|L3?.&v,/fSTPo2*aHyFpH. @OHI= hBnf}E*/zc/Z+u:ொױ=Ύ@h.cHbF>[Hyp@nŸܴf΂Δ@Q2F>3RN\=@1{M\׏Dꔸ\Cf g{埉ϑeS9X0<//@g0x,BgKї=cP:/JEl0=cX `3HHw S>P4w3P0ZRv / M XX,w(+Jf MhE!1w.pї>P/xZM&HT(I Wy+hZ׻0Ҁ м@SlnÍ`r?f?bqBg/9p@OҴ$6P jp`өgj@X//.1Z-dѫ/lj=Ϳ=iŵ`J/<4HaJdoK8Hn c @OJnc PI.` >8ր΀ ɐ@rJl/r"]"cm mt]lh nڦhY μre~^WyмrvmaWI@,J]мASWDЈA cAܐ/``ݐvBξ*`[5PfpUhxܲtmVDF84ѫL~Δ@09pUn@6$m^D@g AF`$B0":Mv  `2jY JAM Packer Decrunch V4.0kV.BHn!/WBd^0ˮFJng`040AA,0A<.4. n a&.?QNA\ ,_QЦG!ONqB2z6:RF08:܁"HAJAf |2:ƲznzPaTaP. ۏ Odž `Ŧabf 1` 1><aDaTSBgzgRAf|<: FmC@`PffbR@2`:a >8`a1dž@:< CNs:<Q*8g SfXpPu@ |8ÈNsBQ>NuTB+T_b^*ꀄYu䀊ZBS^*% WTNONOgIO@.JO=AF|DCA{@HyуdR0 JPK!Jg#М0AbHyAp@&HyA/D%I?-472BY*vB5u ICI`@P$6|U-ܪ n$A{@Hy IٯrâB1w@Bؚ &2?f6 =~v$UCBgKoooodx@ioooiWE 2f<5ޔ72B8a'o_mo=€v2fD1#5#ia'I_T2fNޔ;dq3f^}M5eS6pHЃxP8p eo?Suм|&aa'ah 9f <`ل X`wͩd?~l$a'OaR@rj fX/߀u? P^*B2fdC:ffC DlYC02fxC:fP꒣\S@@ P3fRXCiG @}f2fCڒ<(PLKq eBgq 4Pp2f:fޔ1C'Ag 71 ԼҖRXv$1@w%0rij/ڸfHy/w }"0"g]P?f}?bBgCaAY ґ0.6(` l@5Hnh}?XSq2l_2!A .Qֿ⻵0.Pdc!À\W o@4n@/TqdS8./`P?CEQB@ĚG#LHOO GfH?ыXH/.V9f/9TP׏vB?<\05Jf$H`>d`&."t\ @B(/S/@PG *n.S(nBrBy#͛ S#~ Ї#s6g -7BWH<<7CРAA0?<̻BJEmd O x?- V`b"=PѢ`.PD0c*=.ܰB 5PԟA`Bf8`.2n05cm6A:0g` oR s1s-{xrFf A{`z20!0`S Fmtpup*ЅHЇ(@ HІм&@`$~g SFPx m֣<8ۏ :WAK0C8W1??'|須JDl>!ANPWl.釣`04/YgZHڗ3,A?{@61̈́`A?9@6  <0Qv{ pg&0B\39pϖXAA҈~ݗ3eM9c]900??0??ui\珇eM{c]{1'eM'ADRGf =Ψ1`'11`Qs @03@1!8#. "89r[h@0GtB0'Q@Q!m?%}~T"wQE8pEd` 0@8#w3!0c*4HL 1|s2iCGPDB:md2Zjz@D`Fj`@3YCH@HU08DCMRp@82RA=AAy~CM|0k$0CM 21AHЁT*@Nq0]b CMU@=@51P;D<F3< 05AP}Fs6Ю:?1E3:0P6\0)51P}Esl0411ed1 @300J@fo) l>.p BE!*wH8Ƞ؍ D8( ,0g <`܀RE0H058Yrfpo{*3"% ?0|'`  %?up[T a>[<N"΢%!A ^0`$@?@@?aumXc!gW0˞H?^l`eUHBn./ )a+Hs/ X#7B1p0f*@b09b0co`.c# eo?BKun^Bn8<>` phDmBE`E@# E< V0H#E>0G?k G|e=(]KK.,M>-@@8 ' `ucYQ?d$Itxr:TDZb63@RCKs c,c 7@b70,1@3ߑH0o3s7@3 VsTBXGfL+j.prt}Q6t[2AXd1Cpr1dRApNu0|AR$szr4ɒZ9024TBTDp k$z4<tx0<82X6244XDTBp6`BRNua XNuH"PRQ~>r A0<s ad t"zx&zd/Q}(N<@p|%>< V6<[3@o0)Q|%dT@01Gm2G8+kR{E0RJe2pf'lLo`Sj8*ZgYRR81L:@4o1301Gd1 320fH|m-t)0לBjqTFkg, `&% |,`g]p-%-QFDF*D? Fb0JA @2~ F40j//?/wwwsq31w{t`m P}B**j*(^&A !GpB !M0L!ML0 n @xAA@g RD!6JDgh< ><0SFQ<<a x~@$Pn0 Pn0T RB`& z $>@xHP]2(PqA TBfr0 LS@@@Bt~1C"zگ"Q0r@0agtRA8|lC@%P904`RA0|"@ Pn8zRERF0SDP0` Dlr4aRABm`SA`0<0| .` 116oB@`2AC"3 $R@|mNu "NEp0`xs0`~rPgpIPKP24s g*4 G`460 C 70"1 0"200 7 1 >1P$KP6s0f 7(50:s23 22P`HrC`Ft| q>< 5 (p zF"QBP(z:`EJAmM!f$0<9`0M Vg4rzAJM BVvEz(.E,z!@Vo8L z 0<|m9!#5!#7 `82#83 9M 8s@g6507@zBA{.BA#B AgыBAS#;.#_S n c3MOJ}1 nH4Nm6c­ɱ@3!xaQ  n3WžYžžӳ n2e'D##N nZcŔӦJvdR@IMcQѲYDPP0NM{#w'(Nw#@ Jѯtv(/ct߰~ |wl*npr(*dֱhjS](p"TBy nƹeZߵ{MԟŸNX !J!_ NAYyrU2"P$h/( J@2u($ bʔ1Qtt֑Iq>֕_`R p.և-dbttU`ևj000,fz.r( t `8`6gggggggg g ?z~N\dtbtt`pfЮ/eypt w<z.  ,bttBW0cikIa A2rI`fr;j`f"gЮW @za!`?dbTg6].HЃB`> / cc b 0ЮPv"ƽ!eR 2 H@A9$ BB`J"IJlVar}JlwDvd`BbdDdD -ARGyBG".0~~D$Il GD&gHC H@@HCBCւJGgD-C :з.J͑1ѧ2.boHQs_a_OS|bQC2S|VQ7"R0L0<}f& ]1bB UBnV*00n`*K@Bp[Uu>Po\r";HPYPgXHf0(9WV4,BG`P>:($@/TPf><`rgRl &JGm_zjrgDn.\@m"?YcB}g<]`0`j?=SePu>JGl 3VP?`?RfP-S/ fpE  7U%aKBO2K^ROHぃ|1fSnG0.3wQCeS`Th мP@Z#d݊ E3Љ5=L 0FliA1l։kqRƂlPDl\Ug3?M PoG3=UL0>7᷀69>Ƽ P{ wHy!W #߁Hyl" qq`]tmyzQ>aq`fhktpcckqd|pJ`abeHdwa caa`g` ba`^`bfuooac\``b]a]acbLe`[Gaaa\Q#=3 PVhPlrQgTY$Pof BB`&". Bvd d``bd-@-AUSHL*~&gHC H@J@g@HCBCւ-C LN^.JQTlLUcQCNVQoQgNX=@g3Ք0<``0<|qN^NuQ *OgJAVMˑO}GOURCEa5eЙa3RG`NOSSlyDESTINATIONTTPAPP ?OTOBO0OO ??#;?????z?h)_ zz2\ z!{\\'_cW504bc̠p64%eGrrr!%b@!!]#ҌL2Ԭ.Es pAMly? |_#Yes |rcelҼk`,Up`d e 5Ж~ӥӿ! $> ,㓽Noav|h kwell..Ҍ!p{FineO.T will|` .  k ow! You'gtr`Fy|oluܐy` system!@funlh|doessupp it.#Ohph `uldopenkst$Exit]ՍsJundd!|#Why'stn?%֒m MULTI ERPORT m* q NOT COMTEDREAwSON1-+  ao sa - wnwhPm |+lra n o+rs`ceLEb|Kenough m_M Ԟa kknownd } ¢`y key tRue_;qhӏЅpöDe_#Sh3it! fExecutable;m`mplete?!nailure!|$Retry|;HG%sٴUnf MΨj:siEt'P pETURN ?jSd. DrU error.rl0wed1|Not aM_ Ok]Ca;n't create 3][pSsufficientmory. Abort]Dp^L:(> Gpffr+om inputsUbŠ e{--^LʘpWPq$\*',B'RIVEA.^ 2][|swhich dq3? ][ AB| C: ]ChoosPPpDttion _pathname^0rrԞw`aRaP }uFJPK!`ysq|dqUfd.P_EXITHV2sMetho@ ICELZWMultisPcFlashUNHeadp;Tژ5qUnUU No5p`potUse FpFormatQ?n\ LÏ:4"ڏȏpaP]|kwp ogTnojjgfokxng[`u3!do`XpMfOa78>AybRpUaT RQ_D`T mJ2 T _(T J2 Z4_T4ZOT4_T4[]BBL_ 䘦[AB[ Bx5<[JBx=Kk=B@TRY?di[B$jrkJTK 2%?M'[oKE h1A@0`qҶ1 h3񕠠X `C P[1QDzr` : &R *@?!*@C1#! m(B!9$QBW `BPAP P_1 ЏU:zrFZXz]UӪC^ze!.CHnzyJb *zz~_tz_XzDzJbUz_Jbj BpBÔHH TBߔM_uRXIc@LzO\NzZEKB$xz!quB$zH!]Qz&]&dcuT*Lpy: L: D]:<31eN:"( c>068$4  o lv; %0 ! #P,!l< % Zv4  A"6L "T $0<  >.](  &   #     $ ' &00(  *V %%  C^$l&   D [('B   { C Z @((L \8"&J  J B"' (l@ (X&>&. &. 4$f.,*   ."(L~8 &&^)AkA`"_., FP%# & ) r  ; SIMPLE TRAP #1 FILE DEPACKER FOR JAM PACKER V3.0/4.0 LZH COMPRESSION. ; WILL ONLY WORK ON FILES WHICH ARE COMPLETELY READ BY ONE CALL TO ; FREAD (TRAP #1 #$3F). savebuf = $200 YES equ 1 NO equ 0 LSEEKROUTINE EQU YES ;WHEN PROG USES LSEEK TO DETERMINE FILE LENGTH SFIRSTROUTINE EQU YES ;WHEN PROG USES SFIRST TO DETERMINE FILE LENGTH BEGINNING: BRA.S START fname: dc.b 'PLAYER.PRG',$00 EVEN START: MOVEA.L A7,A5 LEA BEGINNING(PC),A7 MOVE.L 4(A5),A5 MOVE.L $C(A5),D0 ADD.L $14(A5),D0 ADD.L $1C(A5),D0 ADD.L #$100,D0 MOVE.L D0,-(A7) MOVE.L A5,-(A7) MOVE.W #$0000,-(A7) MOVE.W #$004A,-(A7) TRAP #1 ADDA.L #$0000000C,A7 clr.l -(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp move.l d0,d7 MOVE.L #$1600,-(SP) MOVE.W #$48,-(SP) TRAP #1 ;RESERVE SOME SPACE FOR LZH DEPACK TABLES ADDQ.L #6,SP MOVE.L D0,BUFPOS move.l $84.W,oldtrap1vector move.l #trapit,$84.W move.l d7,-(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp MOVE.L #NULL,-(SP) MOVE.L #NULL,-(SP) PEA fname(PC) MOVE.W #0,-(SP) MOVE.W #$4B,-(SP) TRAP #1 add.l #14,sp ;ENSURE THAT YOU CAN QUIT OUT OF PROGRAMS WITHOUT A CRASH clr.l -(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp move.l oldtrap1vector(pc),$84.w move.l d0,-(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp clr.w -(sp) trap #1 trapit: btst #$05,(a7) bne.S super move.l usp,a0 bra.S after super: move.l a7,a0 addq.l #6,a0 after: cmp.w #$3d,(a0) beq doopen cmp.w #$3f,(a0) beq.s load IFNE LSEEKROUTINE cmp.w #$42,(a0) beq.s down ENDC IFNE SFIRSTROUTINE cmp.w #$4e,(a0) beq.s dosfirst cmp.w #$2f,(a0) beq.s dogetdta cmp.w #$1a,(a0) ENDC bne dotrap1 IFNE SFIRSTROUTINE lea retsetdta(pc),a0 move.l 2(a7),(a0) lea setdta(pc),a0 move.l a0,2(a7) bra dotrap1 dogetdta: lea retgetdta(pc),a0 move.l 2(a7),(a0) lea getdta(pc),a0 move.l a0,2(a7) bra dotrap1 ENDC doopen: lea retopen(pc),a0 move.l 2(a7),(a0) lea open(pc),a0 move.l a0,2(a7) bra dotrap1 ;here starts the stuff for SFIRST IFNE SFIRSTROUTINE dosfirst: lea retsfirst(pc),a0 move.l 2(a7),(a0) lea sfirst(pc),a0 move.l a0,2(a7) bra.s dotrap1 ENDC ;here start the stuff for LSEEK IFNE LSEEKROUTINE down: lea retlseek(pc),a0 move.l 2(a7),(a0) lea lseek(pc),a0 move.l a0,2(a7) bra.s dotrap1 ENDC load: move.w inopen(pc),d0 cmp.w #1,d0 beq.s dotrap1 ;if checking depack marker, do real trap1! move.w seekflag(pc),d0 cmp.w #1,d0 beq.s dotrap1 ;if called from seek handler, exit! move.w mustdecrun(pc),d0 cmp.w #1,d0 bne.s dotrap1 ;if marker not present, don't decrunch! move.l a7,d0 movem.l a1-a3,-(sp) sub.l #$20,8(a0) lea buffer(pc),a1 move.l 8(a0),(a1) move.l d0,a2 lea return(pc),a1 move.l 2(a2),(a1) lea decrunch(pc),a1 move.l a1,2(a2) move.l buffer(pc),a1 lea savebuf,a2 move.l #$20,a3 loadloop: move.b (a1)+,(a2)+ subq.l #1,a3 cmp.l #0,a3 bne.s loadloop movem.l (sp)+,a1-a3 dotrap1: dc.w $4ef9 oldtrap1vector: dc.l $00 ;************************** open: tst.l d0 bmi exitopen2 movem.l a1-a3,-(sp) move.l d0,a3 lea inopen(pc),a1 move.w #1,(a1) pea test(pc) move.l #8,-(sp) move.w a3,-(sp) move.w #$3f,-(sp) trap #1 add.l #12,sp tst.l d0 ;ADDED TO FIX ZERO LENGTH FILE beq.s notcrun ;DITTO move.l magic(pc),d0 cmp.l test(pc),d0 bne.s notcrun lea mustdecrun(pc),a1 move.w #1,(a1) bra.s skipit notcrun: lea mustdecrun(pc),a1 move.w #0,(a1) skipit: move.w #1,-(sp) move.w a3,-(sp) move.l #-8,-(sp) move.w #$42,-(sp) trap #1 add.l #10,sp move.l a3,d0 exitopen: lea inopen(pc),a1 move.w #0,(a1) movem.l (sp)+,a1-a3 exitopen2: dc.w $4ef9 retopen: ;exit dc.l $00 inopen: dc.w 0 test: dc.l 0 unpaklen: dc.l 0 mustdecrun: dc.w 0 magic: dc.b 'LZH!' IFNE SFIRSTROUTINE ;*************************** getdta: lea dta(pc),a0 move.l d0,(a0) dc.w $4ef9 retgetdta: dc.l $00 ;**************************** setdta: lea dta(pc),a0 move.l 2(a7),(a0) dc.w $4ef9 retsetdta: dc.l $00 ;*********************************** FOR $4E (SFIRST) sfirst: tst.l d0 bne pissoff move.l 2(a7),a0 movem.l a1-a3,-(sp) move.w #$2,-(sp) move.l a0,-(sp) move.w #$3d,-(sp) trap #1 addq.l #8,sp lea sfirsthandle(pc),a1 move.w d0,(a1) move.w mustdecrun(pc),d0 cmp.w #1,d0 beq.s change bra.s afterchange change: move.l dta(pc),a0 add.l #26,a0 move.l unpaklen(pc),d0 move.l d0,(a0) afterchange: move.w sfirsthandle(pc),-(sp) move.w #$3e,-(sp) trap #1 addq.l #4,sp movem.l (sp)+,a1-a3 pissoff: dc.w $4ef9 retsfirst: ;exit dc.l $00 ENDC ;*********************************** FOR $42 (LSEEK) IN TRAP1 IFNE LSEEKROUTINE lseek: cmp.w #2,8(a7) bne vamos3 cmp.l #0,2(a7) bne vamos3 lea seekhandle(pc),a0 move.w 6(a7),(a0) lea sd0save(pc),a0 move.l d0,(a0) move.w mustdecrun(pc),d0 cmp.w #1,d0 bne.s vamos move.l unpaklen(pc),d0 bra.s vamos3 vamos: move.l sd0save(pc),d0 vamos3: dc.w $4ef9 retlseek: ;exit dc.l $00 ENDC ;************************************ FOR $3F (READ) IN TRAP1 decrunch: ;a0 - start of crunched data ;a1 - beginning of uncrunching area movem.l d0-d7/a0-a6,-(sp) move.l buffer(pc),a0 lea origlen(pc),a1 move.l 4(a0),(a1) move sr,d1 btst #13,d1 bne nochange clr.l -(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp lea jek(pc),a6 move.l d0,(a6) lea mode(pc),a1 move.w #1,(a1) ;1 denotes must return to user mode nochange: lea colstore(pc),a1 move.w $fff8240,(a1) move.l buffer(pc),a0 move.l a0,a1 add.l #$20,a1 BSR DEPACK move.w colstore(pc),$fff8240 ;restore memory saved in buffer move.l buffer(pc),a1 lea savebuf,a2 move.l #$20,a3 loadloop2: move.b (a2)+,(a1)+ subq.l #1,a3 cmp.l #0,a3 bne.s loadloop2 move.w mode(pc),d0 cmp.w #1,d0 bne nochange2 move.l jek(pc),-(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp nochange2: lea mode(pc),a1 move.w #$00,(a1) movem.l (sp)+,d0-d7/a0-a6 move.l origlen(pc),d0 dc.w $4ef9 return: ;exit decrunch module dc.l $00 * LZH DEPACKER For use with the JAM Packer V3.0/V4.0 * * USAGE: * LEA $ADDRESS OF PACKED DATA,A0 * LEA $ADDRESS TO UNPACK DATA TO,A1 * BSR DEPACK * * NOTE: Must save registers before executing depack if original * contents are required. RESET MOVEM.W D0-D1/D3/D5,-(A7) MOVEA.L A1,A2 MOVEQ #$00,D2 MOVEQ #-$02,D4 MOVEQ #$00,D1 MOVE.W #$0139,D5 OUTER ADDQ.W #2,D4 CMP.W (A2)+,D7 BHI.S OUTER MOVE.W $00(A3,D4.W),D3 ADDQ.W #1,D3 LSR.W #1,D3 CMP.W -$02(A3,D2.W),D3 BLS.S BIDDLE MOVE.W $00(A3,D1.W),D0 ADD.W $02(A3,D1.W),D0 CMP.W D0,D3 BLS.S BIDDLE BITH MOVE.W D0,$00(A3,D2.W) MOVE.W D1,$00(A1,D2.W) MOVE.W D2,$00(A0,D1.W) MOVE.W D2,$02(A0,D1.W) ADDQ.W #2,D2 ADDQ.L #4,D1 MOVE.W $00(A3,D1.W),D0 ADD.W $02(A3,D1.W),D0 CMP.W D0,D3 BHI.S BITH BIDDLE MOVE.W D3,$00(A3,D2.W) MOVE.W $00(A1,D4.W),D0 MOVE.W D0,$00(A1,D2.W) MOVE.W D2,$00(A0,D0.W) ADDQ.W #2,D2 DBF D5,OUTER MAKETABLE2 MOVE.W $00(A3,D1.W),D0 ADD.W $02(A3,D1.W),D0 MOVE.W D0,$00(A3,D2.W) MOVE.W D1,$00(A1,D2.W) MOVE.W D2,$00(A0,D1.W) MOVE.W D2,$02(A0,D1.W) ADDQ.W #2,D2 ADDQ.L #4,D1 CMP.W D7,D2 BNE.S MAKETABLE2 MOVEM.W (A7)+,D0-D1/D3/D5 RTS CREATE MOVE.L TABLE7(PC),A0 LEA TDATA1(PC),A1 MOVEQ #$00,D0 MOVEQ #$1F,D1 MOVEQ #$00,D2 LOOP1 MOVE.B D0,(A0)+ DBF D1,LOOP1 DBF D2,EXIT1 MOVE.W (A1)+,D3 MOVEQ #$03,D2 EXIT1 ROL.W #4,D3 MOVE.W D3,D1 ANDI.W #$000F,D1 ADDQ.B #4,D0 BCC.S LOOP1 MOVE.L TABLE8(PC),A0 LEA TDATA2(PC),A1 MOVEQ #$05,D0 MOVEQ #$03,D1 LOOP2 MOVE.B $00(A1,D0.W),D2 EXT.W D2 LOOP3 MOVE.B D1,(A0)+ DBF D2,LOOP3 ADDQ.W #1,D1 DBF D0,LOOP2 RTS CREATE2 MOVE.L TABLE1(PC),A0 MOVE.L TABLE5(PC),A1 MOVE.L TABLE4(PC),A2 MOVEQ #$01,D1 MOVE.W #$04E6,D2 MOVEQ #$00,D4 MOVE.W #$0139,D0 CONTINUE MOVE.W D1,(A0)+ MOVE.W D2,(A1)+ MOVE.W D4,(A2)+ ADDQ.W #2,D2 ADDQ.W #2,D4 DBF D0,CONTINUE MOVE.L TABLE1(PC),A0 MOVE.L TABLE2(PC),A3 MOVE.L TABLE6(PC),A1 MOVE.L TABLE3(PC),A2 MOVE.W #$0274,D2 MOVEQ #$00,D4 MOVE.W #$0138,D0 DOMORE MOVE.W (A0)+,D1 ADD.W (A0)+,D1 MOVE.W D1,(A3)+ MOVE.W D4,(A1)+ MOVE.W D2,(A2)+ MOVE.W D2,(A2)+ ADDQ.W #4,D4 ADDQ.W #2,D2 DBF D0,DOMORE MOVE.W #$FFFF,(A3) CLR.W (A2) RTS RESTORE BSR RESET BRA BACK TABLE1 DC.L 00 TABLE2 DC.L 00 TABLE3 DC.L 00 TABLE4 DC.L 00 TABLE5 DC.L 00 TABLE6 DC.L 00 TABLE7 DC.L 00 TABLE8 DC.L 00 BUFPOS: DC.L 00 EXIT ADDQ.L #4,A7 RTS DEPACK MOVE.L A0,A5 MOVE.L A1,A6 LEA TABLE1(PC),A0 MOVE.L #0,(A0) ;SET UP RELATIVE TABLE OFFSETS MOVE.L #$274,4(A0) MOVE.L #$4E8,8(A0) MOVE.L #$9CE,12(A0) MOVE.L #$C42,16(A0) MOVE.L #$EB6,20(A0) MOVE.L #$112A,24(A0) MOVE.L #$122A,28(A0) MOVE.L BUFPOS(PC),D1 TST.L D1 BNE.S DONTUSESCREEN USESCREEN: MOVE.B $FFFF8201.W,D6 MOVE.B $FFFF8203.W,D7 LSL.L #8,D6 MOVE.B D7,D6 LSL.L #8,D6 MOVE.L D6,D1 DONTUSESCREEN: ; MOVE.L A7,D1 ;GET STACK POSITON ; sub.l #$1500,D1 ;TABLES START ADDRESS IN D1 ;STORE UNDER STACK MOVE.W #7,D0 TABLOOP ADD.L D1,(A0)+ ;ADD TABLE BASE ADDRESS TO OFFSETS DBF D0,TABLOOP BSR CREATE BSR CREATE2 MOVE.L TABLE3(PC),A0 MOVE.L TABLE5(PC),A1 MOVE.L TABLE1(PC),A3 MOVE.L A6,-(A7) ADD.L 4(A5),A6 ADD.L 8(A5),A5 ADD.L #$0C,A5 MOVE.L A6,A4 ;THIS IS REQUIRED! MOVE.W #59,D0 ;MOVE 60 SPACES TO END OF UNPACKED AREA SPACES MOVE.B #$20,(A4)+ ;NOTE: SHOULD PROBABLY SAVE THIS DATA DBF D0,SPACES ; BEFORE WIPING IT OUT! MOVEQ #$08,D6 MOVE.B -(A5),D5 MOVE.W #$04E6,D7 MOVE.L TABLE8(PC),A4 TOP NOT.W $FFFF8240.W CMPA.L (A7),A6 BLE EXIT MOVE.W $04E4(A1),D0 MORE DBF D6,NOTEMPTY MOVEQ #$07,D6 MOVE.B -(A5),D5 NOTEMPTY ADD.B D5,D5 BCC.S ZERO ADDQ.W #2,D0 ZERO MOVE.W $00(A1,D0.W),D0 CMP.W D7,D0 BLT.S MORE MOVE.W D0,D1 SUB.W D7,D0 MOVE.W $04E4(A3),D4 BMI RESTORE BACK MOVE.W $00(A0,D1.W),D1 SCAN LEA $00(A3,D1.W),A2 ADDQ.W #1,(A2) CMPM.W (A2)+,(A2)+ BCS.S FRSTGTR MOVE.W $00(A0,D1.W),D1 BNE.S SCAN LSR.W #1,D0 CMP.W #$0100,D0 BGE.S GTE256 WRITE MOVE.B D0,-(A6) BRA.S TOP FRSTGTR SUBQ.W #1,-$0004(A2) MOVE.W -$0004(A2),D4 SAME CMP.W (A2)+,D4 BEQ.S SAME SUBQ.L #4,A2 ADDQ.W #1,(A2) SUBA.L A3,A2 MOVE.W $00(A1,D1.W),D4 MOVE.W A2,$00(A0,D4.W) CMP.W D7,D4 BCC.S SKIP MOVE.W A2,$02(A0,D4.W) SKIP MOVE.W $00(A1,A2.W),D2 MOVE.W D4,$00(A1,A2.W) MOVE.W D1,$00(A0,D2.W) CMP.W D7,D2 BCC.S SKIP2 MOVE.W D1,$02(A0,D2.W) SKIP2 MOVE.W D2,$00(A1,D1.W) MOVE.W $00(A0,A2.W),D1 BNE.S SCAN LSR.W #1,D0 CMP.W #$0100,D0 BLT.S WRITE GTE256 MOVE.B -1(A5),D1 MOVEQ #$00,D2 LSR.B D6,D1 OR.B D5,D1 MOVE.B $00(A4,D1.W),D2 SUB.W D2,D6 BPL.S POSITIVE MOVE.B -(A5),D5 MOVE.B D5,D4 ADDQ.W #2,D6 BMI.S OVERFLOW BEQ.S MODD4 LSR.B #1,D4 LSL.B #7,D5 BRA.S MODD4 READONE MOVE.B -(A5),D5 MOVE.B D5,D4 LSL.B #6,D5 MOVEQ #$02,D6 LSR.B D6,D4 BRA.S DOCOPY POSITIVE BEQ.S READONE MOVE.B (A5),D5 SUBQ.W #6,D6 OVERFLOW NEG.W D6 LSL.B D6,D5 MOVE.B D5,D4 MOVE.B -(A5),D5 MOVE.B D5,D2 LSL.B D6,D5 SUBQ.W #8,D6 NEG.W D6 LSR.B D6,D2 OR.B D2,D4 MODD4 ANDI.W #$003F,D4 DOCOPY MOVE.L TABLE7(PC),A0 MOVE.B (A0,D1.W),D2 LSL.W #4,D2 OR.B D4,D2 ;NEG.W D2 LEA $01(A6,D2.W),A0 SUBI.W #$00FE,D0 MOVE.W D0,D1 COPY MOVE.B -(A0),D0 MOVE.B D0,-(A6) DBF D1,COPY MOVE.L TABLE3(PC),A0 BRA TOP TDATA2 DC.W $0F2F DC.W $2F3F DC.W $2F1F TDATA1 DC.W $FFF7 DC.W $7777 DC.W $7773 DC.W $3333 DC.W $3333 DC.W $3331 DC.W $1111 DC.W $1111 DC.W $1111 DC.W $1111 DC.W $1111 DC.W $1110 DC.L $00 DC.L $00 SECTION DATA origlen: dc.l $00 oldssp: dc.l $00 buffer: dc.l $00 mode: dc.l $00 jek: dc.l $00 length: dc.l $00 colstore: dc.l $00 seekflag: dc.w $00 seekhandle: dc.w $00 sd0save: dc.l $00 rtlseeksav: dc.l $00 sfirsthandle: dc.l $00 dta: dc.l $00 oldsize: dc.l $00 NULL: DC.L $00.Zoo archive.Use Zoo to decompress it.  ^ `Bx(,(,62(2<(, B< <6& . <0 "$. 2 " $ "   F & b<" 24@   & ` " " ^ *<(8VDJ 68$fH*  (, $D,4 @ ~   (PB @ B 0  ,`6  "* $$ 4$" Zd< R,     *X2<~2zWkJAMPACK Lm DEPACKS Lm . {.. hgQICE_2_3 PRG dbICE_KLF S d9ICE_UNP2S dP ICE_UNPAS d `B?<NN @0<}BQ>NNJAg|9HP?< NAPOA a&MM +ЫЫA .GIJgrѓB(g<fG``GPN$^,,,,ܓ,,Cp$L(QGX /KN(K&YdB`BNK~ M&`I |a``X|g"TezF`$|aHg\E`|a>g E`&`| a,E?f:I|a|m4TO]En(MmXL|a4P`>BEg EQJENu&`Ix|a84@HaDgt@IP:$$Q| z gDTeF`|agPEVE`|aHE|aPVSEk|HF&Qjf"<fNu&` `````` `` Y %ATOMIK v3.3 by ALTAIR VMAX/MCSFbV,1L-HGa@BP (y&FK70"g5NB:dQSR:5u&TUfx3gO=Nuwh| |PK㴢Vz@t"]N^sBtrN3f J9G]P1tkGfBU:͊Qlpy5f36㴀E\H,b g*ygPfha|&0$<89+Q7~ZAu"Q~yfgv3g=c V 2A :MڑG[m\I.*B66Zd\,,(poO~.*Vv(4'6FJDW7Jf" L(dfR?$ I G ,:p~)u;a&wЌHT,O;EsJ@4.*+o$87tC[CB|M,;d:&8/CW/po%t\m3 8~ j+p "#cd3&}":ҺAݹmBjO: J_i@Z 6((ڒ.& :n(P(f F*gS4CJdfJ2#ޔ l_Q~ F$Ix$/+ oLm<Z&xT / `ME,&> )+ QI08N(Op>#2Ӧ $ /:L Ⱥi<7.J-@4L\B!f T0eZP>,p 0[Pp:7h璹o@x_CCtr€}Qm8'Awai+bG#nqHS Ӟ+ZTvSBk#<'0k7uRW-  o\h؀XCQ?,&eyb|ysdx# x B%l#*X5te-30.o ")$Đ4DMgQ?BBe%(VgD! Z9|&=x^ Sg7fK(D3uue,z: B=2°#dx*NUB@! ӎB bK ﲹ Jf:@A≜HsJXLx$|(h4^U?Pr.i#w¯8ڄ&3ǩL|&/z@AB}Dq3~PIv>TKҀ gf~΁?H=($`.kG ϞA qr1?H| /$Hnp.c¸xkg /%IA\Jd$l*B=YƐ#r9hEy#q.pQRLq<fm" ?4#yRg&H׆Na#x9|/ ,ImhT,H$޺aдó=tA:ҖR62zfg.8*#p':v#˚|婂Ezo^ IﲱӣB%5QG<,v8Ke C6308KDa " l?b62` ?o A@ ʰ:x40(0:xzm`\f ~||i I\ T!(PIK  &ATt'Bd0<@ 2Tޤ}vpP>-ZI{*nnޭao*opM|LA? ü"s+ѓg 4fsGP]/$K*pAG .$ۼ\C }NЍٜ&n$.抑/&SjN.^i.Fwݺ#G̚wRNS߈HIx,L_ ICE!fO6jbK!ah."N̈&NSV,K~42<͟5v3a>|58#z@PBDC͗ΛHQόLSfpw#L},[*H*"a$dOvw!a"H@Vҩ% %n* ,Ef%AQ,rxQ_NutaТxV>ka~Ag"CvtaTB1HaBqjDrdpt?a?BC@!QF)PW݄D/T i J0ȀJtEdv s6rqqNCtd Gugf Jy܃W& 3P>D "J&-K0og$_2'SY/n A;dʟܿ N/yHC>n9iRPC0$_1$=doy(Default_42CA:h3) P oAct0NoΘm!ifyOKLE0ؚ%;B8fZM=1Qd"%Rema@(%Iʙ{P-~<AD7CTi.O R-:A%^savÿg FAB!;)skit d.xLFRpä g![Kғ$dHEfgӁV0n34FU!DKIM+AEo=ߏ?Thƹܓarnw6QbyA˶aofoup&r.8 hv%B20rFiqfttgt:;403.[91(K|7{ 0}oTf-~ WhAGH$=Da+Ex8utab<'r-Pdam8s-DTAX*C3SETUP;(Rfloc~!ft derunch߆-pe2hpckno݆file? AF@`0ن D.youpwihtous/#nBdJHalgithmxJfopituـcmpreSsion?][[NO|YES]*\ `)L T,R0" 6, c\0v:I2 9 &4P[6n&2 n*Routine de depack 2.34 *MV-REPS begin: 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 dc.w $a00a pea text move.w #9,-(a7) trap #1 ;text print addq.l #6,a7 dc.w $a009 move.w #7,-(a7) trap #1 ;wait for key addq.l #2,a7 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 '1STPRG.prg',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_2_34\ice_unp2.s bss loadadr:ds.l 1 ds.b 500 stackend: ds.b 10 SECTION DATA text DC.B 27,"E",27,"f",27,"w" DC.B 27,"f",27,"b",1,27,"Y",30+15,32+11, "MERCHANT COLONY" DC.B 27,"f",27,"b",15,27,"Y",30+17,32+7,"CRACKED BY THE REPLICANTS" DC.B 27,"f",27,"b",15,27,"Y",30+19,32+9,"PACKED BY MAD VISION" DC.B 00,00 EVEN Begin: LINK A3,#-$78 MOVEM.L A0-A6/D0-D7,-(A7) LEA 120(A0),A4 MOVEA.L A4,A6 BSR.S L0009 CMPI.L #$49434521,D0 BNE L0008 BSR.S L0009 LEA -8(A0,D0.L),A5 BSR.S L0009 MOVE.L D0,(A7) ADDA.L D0,A6 MOVEA.L A6,A1 MOVEQ #$77,D0 L0000:MOVE.B -(A1),-(A3) DBF D0,L0000 MOVEA.L A6,A3 MOVE.B -(A5),D7 BSR.S L000A MOVEA.L A3,A6 BSR.S L000E BCC.S L0005 MOVE.W #$F9F,D1 BSR.S L000E BCC.S L0001 MOVEQ #$F,D0 BSR.S L0010 L0001:MOVE.W D1,D7 L0002:MOVEQ #3,D6 L0003:MOVE.W -(A3),D4 MOVEQ #3,D5 L0004:ADD.W D4,D4 ADDX.W D0,D0 ADD.W D4,D4 ADDX.W D1,D1 ADD.W D4,D4 ADDX.W D2,D2 ADD.W D4,D4 ADDX.W D3,D3 DBF D5,L0004 DBF D6,L0003 MOVEM.W D0-D3,(A3) DBF D7,L0002 L0005:MOVEM.L (A7),A0-A3/D0-D7 L0006:MOVE.B (A4)+,(A0)+ SUBQ.L #1,D0 BNE.S L0006 MOVEQ #$77,D0 L0007:MOVE.B -(A3),-(A6) DBF D0,L0007 L0008:MOVEM.L (A7)+,A0-A6/D0-D7 UNLK A3 RTS L0009:BRA.S L0013 L000A:BSR.S L000E BCC.S L000D MOVEQ #0,D1 BSR.S L000E BCC.S L000C LEA L001D(PC),A1 MOVEQ #4,D3 L000B:MOVE.L -(A1),D0 BSR.S L0010 SWAP D0 CMP.W D0,D1 DBNE D3,L000B ADD.L 20(A1),D1 L000C:MOVE.B -(A5),-(A6) DBF D1,L000C L000D:CMPA.L A4,A6 BGT.S L0015 RTS L000E:ADD.B D7,D7 BNE.S L000F MOVE.B -(A5),D7 ADDX.B D7,D7 L000F:RTS L0010:MOVEQ #0,D1 L0011:ADD.B D7,D7 BNE.S L0012 MOVE.B -(A5),D7 ADDX.B D7,D7 L0012:ADDX.W D1,D1 DBF D0,L0011 RTS L0013:MOVEQ #3,D1 L0014:LSL.L #8,D0 MOVE.B (A0)+,D0 DBF D1,L0014 RTS L0015:LEA L001E(PC),A1 MOVEQ #3,D2 L0016:BSR.S L000E DBCC D2,L0016 MOVEQ #0,D4 MOVEQ #0,D1 MOVE.B 1(A1,D2.W),D0 EXT.W D0 BMI.S L0017 BSR.S L0010 L0017:MOVE.B 6(A1,D2.W),D4 ADD.W D1,D4 BEQ.S L0019 LEA L001F(PC),A1 MOVEQ #1,D2 L0018:BSR.S L000E DBCC D2,L0018 MOVEQ #0,D1 MOVE.B 1(A1,D2.W),D0 EXT.W D0 BSR.S L0010 ADD.W D2,D2 ADD.W 6(A1,D2.W),D1 BPL.S L001B SUB.W D4,D1 BRA.S L001B L0019:MOVEQ #0,D1 MOVEQ #5,D0 MOVEQ #-1,D2 BSR.S L000E BCC.S L001A MOVEQ #8,D0 MOVEQ #$3F,D2 L001A:BSR.S L0010 ADD.W D2,D1 L001B:LEA 2(A6,D4.W),A1 ADDA.W D1,A1 MOVE.B -(A1),-(A6) L001C:MOVE.B -(A1),-(A6) DBF D4,L001C BRA L000A 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 L001D: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 L001E:DC.B $09,$01,$00,$FF,$FF,$08,$04,$02 DC.B $01,$00 L001F:DC.B $0B,$04,$07,$00,$01,$1F,$FF,$FF DC.B $00,$1F Begin: MOVEM.L A0-A6/D0-D7,-(A7) BSR.S L0005 CMPI.L #$49434521,D0 BNE.S L0004 BSR.S L0005 LEA -8(A0,D0.L),A5 BSR.S L0005 MOVE.L D0,(A7) MOVEA.L A1,A4 MOVEA.L A1,A6 ADDA.L D0,A6 MOVEA.L A6,A3 MOVE.B -(A5),D7 BSR.S L0007 BSR.S L000B BCC.S L0004 MOVE.W #$F9F,D1 BSR.S L000B BCC.S L0000 MOVEQ #$F,D0 BSR.S L000D L0000:MOVE.W D1,D7 L0001:MOVEQ #3,D6 L0002:MOVE.W -(A3),D4 MOVEQ #3,D5 L0003:ADD.W D4,D4 ADDX.W D0,D0 ADD.W D4,D4 ADDX.W D1,D1 ADD.W D4,D4 ADDX.W D2,D2 ADD.W D4,D4 ADDX.W D3,D3 DBF D5,L0003 DBF D6,L0002 MOVEM.W D0-D3,(A3) DBF D7,L0001 L0004:MOVEM.L (A7)+,A0-A6/D0-D7 RTS L0005:MOVEQ #3,D1 L0006:LSL.L #8,D0 MOVE.B (A0)+,D0 DBF D1,L0006 RTS L0007:BSR.S L000B BCC.S L000A MOVEQ #0,D1 BSR.S L000B BCC.S L0009 LEA L0018(PC),A1 MOVEQ #4,D3 L0008:MOVE.L -(A1),D0 BSR.S L000D SWAP D0 CMP.W D0,D1 DBNE D3,L0008 ADD.L 20(A1),D1 L0009:MOVE.B -(A5),-(A6) DBF D1,L0009 L000A:CMPA.L A4,A6 BGT.S L0010 RTS L000B:ADD.B D7,D7 BNE.S L000C MOVE.B -(A5),D7 ADDX.B D7,D7 L000C:RTS L000D:MOVEQ #0,D1 L000E:ADD.B D7,D7 BNE.S L000F MOVE.B -(A5),D7 ADDX.B D7,D7 L000F:ADDX.W D1,D1 DBF D0,L000E RTS L0010:LEA L0019(PC),A1 MOVEQ #3,D2 L0011:BSR.S L000B DBCC D2,L0011 MOVEQ #0,D4 MOVEQ #0,D1 MOVE.B 1(A1,D2.W),D0 EXT.W D0 BMI.S L0012 BSR.S L000D L0012:MOVE.B 6(A1,D2.W),D4 ADD.W D1,D4 BEQ.S L0014 LEA L001A(PC),A1 MOVEQ #1,D2 L0013:BSR.S L000B DBCC D2,L0013 MOVEQ #0,D1 MOVE.B 1(A1,D2.W),D0 EXT.W D0 BSR.S L000D ADD.W D2,D2 ADD.W 6(A1,D2.W),D1 BPL.S L0016 SUB.W D4,D1 BRA.S L0016 L0014:MOVEQ #0,D1 MOVEQ #5,D0 MOVEQ #-1,D2 BSR.S L000B BCC.S L0015 MOVEQ #8,D0 MOVEQ #$3F,D2 L0015:BSR.S L000D ADD.W D2,D1 L0016:LEA 2(A6,D4.W),A1 ADDA.W D1,A1 MOVE.B -(A1),-(A6) L0017:MOVE.B -(A1),-(A6) DBF D4,L0017 BRA L0007 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 L0018: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 L0019:DC.B $09,$01,$00,$FF,$FF,$08,$04,$02 DC.B $01,$00 L001A:DC.B $0B,$04,$07,$00,$01,$1F,$FF,$FF DC.B $00,$1F THE STOS FIX PROGRAMS ON THIS DISK ARE COPYRIGHT MATERIAL, AND ARE NOT PUBLIC DOMAIN OR SHAREWARE PUBLIC DOMAIN AND SHAREWARE LIBRARIES ARE WELCOME TO USE THE PROGRAMS TO UPDATE THEIR COLLECTIONS, BUT MUST "NOT" INCLUDE THE UPDATE PROGRAMS IN THEIR COLLECTION OF DISKS AVAILABLE TO THE PUBLIC ************************************************* BASIC INSTRUCTIONS FOR UPDATING YOUR OWN PROGRAMS ************************************************* *****WARNING***** ONLY UPDATE BACK UP COPIES OF YOUR SOFTWARE UNTIL YOU ARE SURE THE NEW VERSION OPERATES AS IS SHOULD. ************************************************* ALTHOUGH MOST PROGRAMS WE HAVE TRIED SEEM TO UPDATE CORRECTLY, THERE ARE A FEW, (especially compiled ones), THAT DO NOT OPERATE AS THEY SHOULD. THIS MAY BE BECAUSE THE PROGRAMMER HAS USED ONE OF THE MANY ADD-ON EXTENSIONS AVAILABLE. SOME OF THESE DO NOT SEEM TO LIKE THE UPDATE PROCESS. ************************************************* COMPILED PROGRAMS..... You will find many compiled programs have been packed, for this reason we have included a depacker program that deals with most packing methods. We have also included two packers so you can repack the programs if required. If programs will fit onto the disk without packing, then do not bother to pack them. Once you have a straight STOS compiled program, run the STOSFX3.PRG, select FIX, then when the file selector appears, click on the program you wish to update. If the title is a normal STOS program, it will be updated, if not, a message will appear informing you of such. Note: programs already updated, will not be recognised as a STOS program!. --------------------------------------------------------- NON-COMPILED PROGRAMS...... i.e. Titles that have been saved to a disk with a STOS folder - it is only the small runner outside the progam that needs updating. Run the FIXRUN3.PRG, and when the file selector box appears, click on the file you wish to update. Unlike the compiler fixer, this one does not update the original, it creates a new file, and replaces the last character of the filename with "_". -------------------------------------------------------- THE STOS LANGUAGE...... Inside the STOS folder on the disk you will find a new runner for your STOS language called BASICMJH.PRG. Simply install this on you main STOS disk, and STOS will then work on TOS 2.06 and above. When you save a program to a STOS folder disk, you will still need to update it using FIXRUN3. If you are not using a machine with TOS2.06 or above, then you do not really need to use this, as you can simply update your programs later using FIXRUN3. ------------------------------------------------------- The Mega Depacker, Jam Packer and Ice Packer programs are not subject to Goodman International Copyright.