PPLD V3.00á1 (C)1994 by Chicken [EcR] ----------------------------------------------------------- WHAT IS PPLD GOOD FOR ? Makes your potatoes grow BIGGER ! Gives you a body IRRESTIBLE to ANY kind of girls ! Cures your aunts gout, hunchback AND PERITONITIS ! Makes your wedding dress DAZZLING white ! Brings you BILLIONS of dollars ! (send me $186.43 for more details) Kills ANYTHING with more than four legs tickling in your hair ! Ah yeah, and besides this, it decompiles the PCBoard Programming Language Executables (.PPE) back to what they were before the so- called compilation. Well, they call it compilation, in fact it's just a translation to tockens simple enough to be executed by the stupid interpreter (my C-64 did it too). [philosophical intermezzo ON] As long as Clark Development Company Inc. can't come up with a REAL compiler there will be decompilers by me or by others. CDC started to encrypt the .PPEs created with PPLC 3.0 and newer. The only effect is even more slowness, nothing else. Ah yes, it also makes it harder for talented authors to protect their work with some well misplaced bytes (Anti Decompiling System). Dear CDC developers, why not creating some real ASM code ? PPEs would run at a decent speed and decompilers would be dead forever. Right, real compilers are a bit trickier to do. But hey ! What are you getting your bucks for then ? Thank you. [philosophical intermezzo OFF] ----------------------------------------------------------- HOW TO USE IT ? ppld [options] srcname[.ext] [dstname[.ext]] Standard extensions are: for source .PPE, for destination .PPD (to prevent overwriting of existing source code). Options: /NOTRACE - Disable Trace Mode PPLD will decompile the whole code and therefore probably get traped by an anti decompiling trick. But if it gets through, you can seek for disabled features and mindless coders. ----------------------------------------------------------- TROUBLE SHOOTINGS PPLC replaces all FOR/WHILE/CASE/... thingies with IF/GOTO statements and rearranges IF [..] THEN [..] ENDIF like this (with ELSE it gets even worse): IF [..] THEN [..] ENDIF ..is compiled as: IF ![..] GOTO LABEL [..] :LABEL Little hint: As the usage of FOR [...] NEXT causes a real mess with lotta useless worstcase bound checkings, your program will run faster when you implement the routine using WHILE or an own IF [..] THEN construction. Serious crashes can be caused by the following reasons: a) A REAL big .PPE needs too much labels. "can't imagine" b) A REAL nasty line gets too long. "never found one" (oops, mflaggi got a line bigger than 1000 characters. But who cares about source of stupid copy'n paste coders anyway) c) A REAL ugly expression has too much iterations. "recursion rulez" d) I created buggy translation tables. "beautiful secretaries can't type" It is possible that a .PPE doesn't recompile to the same size for the following reasons: a) PPLD will skip unused code. (Use the /NOTRACE option to dis- able this feature) "this one is called *AI Optimation Mode*" b) PPLD just forgets about variables defined but not used in the code. (variables are recognized upon usage at positions where PPLC requieres VAR as function/statement parameter) "this one is called *AI Optimation Mode*" c) You have to compile with the same commandline options as the author for the original .PPE. "my two-lines-ppe takes only one kilobyte" d) There are some quite strange .PPEs with only half of the pre- defined user variables included. "public betas suck" At the end of the source, is a list of used functions/statements. If you encounter some missing names or ???s the command is unknown. ----------------------------------------------------------- Q&A (hmm, or S&Q ?) Q: "[..] and the worst: It comes from switzerland !" (a serious swiss sysop/"developer" in ILink) A: Would you feel better when I release next version from Botswana ? ----------------------------------------------------------- REVISION HISTORY: 25.06.94 release of version 1.00 (nightmares get real!) 01.07.94 release of version 1.01 (bugs, bugs, bugs!) - bugfix: decompiled LANGTEXT instead of LANGEXT - bugfix: decompiled FPUTAD instead of FPUTPAD - bugfix: decompiled CDKCHON instead of CDCHKON - bugfix: decompiled UNOPER instead of UN_OPER - bugfix: decompilation errors on statement FFLUSH - bugfix: decompilation errors on statement REDIM - bugfix: decompilation errors on statement SORT - bugfix: added missing statement MOUSEREG - bugfix: added missing statement BRAG - bugfix: added missing statement FREALTUSER - bugfix: added missing function HIMSGNUM - bugfix: added missing function LOMSGNUM - bugfix: added missing function KBDFILUSED - bugfix: added missing function PPLBUFSIZE - bugfix: added missing function KBDBUFSIZE - bugfix: added missing function FLAGCNT - bugfix: out of memory on ppe without vars/constants 20.08.94 release of version 1.02 (it's alive!) * recursive trace mode to detect decompiling traps. This prevents PPLD from decompiling passages with unknown functions/statements. As side effect it won't decompile unused code. * added /NOTRACE option to turn off trace mode and its "features". - bugfix: decompilation errors on VARSEG, VAROFFS, VARADDR, SCRFILE after SORT-bugfix in last version 22.09.94 release of version 2.00 (the fake!) !!!!!!!! DON'T USE IT, IT'S A TROYAN !!!!!!!! 06.11.94 release of version 3.00 (peanuts!) * added PPLC 3.0 decryption * added PPLC 3.0 new statements/functions/types... - bugfix: trace abort on jump to program start/end - bugfix: 4 times more memory for BIIIIIIIG strings (* added PPLC 3.0 procedures/functions support) no time... not finished yet The version with Clark Development copyrights is a fake/ripoff/patch of PPLD version 1.00 by unknown losers (same code, same bugs). The version 2.00 released by an unknown lamer in september is a troyan and will most probably delete your harddisc. ----------------------------------------------------------- CONTACT THE AUTHOR ! If you got an idea for some features, dig it :). But for chitchat, donations, news about PPLC 4.0, hate mails, bombs call The Lycaeum +41 41-762-989 and write a message to sysop, or email via InterNet chicken@ezinfo.vmsmail.ethz.ch ----------------------------------------------------------- COPYRIGHTS: PPLD is copyright of the author. The author allows to: use software, make copies of it, give copies to anybody and distribute it through electronic media. It is not allowed to ask for money or donations for any copy or copies of the program, neither distribute the software and/or docu- mentation with commercial products and/or crackers. ----------------------------------------------------------- DISK-LAMER: The author denies any responsibilities for illegal acts involving the (mis)use of PPLD. It is illegal (and lame) to spread copies of tampered and/or modified PPEs. Pay fair prices to fair shareware authors. This EXCLUDES software which: a) contains backdoors or b) consists of less than 50 lines code or c) costs more than $20 (don't tell me you invested months in your one-in-thousands-so-fucking-boring-online-game) This INCLUDES the great work of the rare REAL coders doing .PPEs ! ----------------------------------------------------------- ! ECR, MOM WANTS THE BEST FOR YOU !