===================================================================== - GhostBuster for TI-89 Titanium by Olivier Armand and Kevin Kofler - ===================================================================== Copyright and licence ===================== Copyright (C) 2004 Olivier Armand and Kevin Kofler. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. In addition, as a special exception, Olivier Armand and Kevin Kofler give permission to link the code of this program with the ttunpack decompression library by the TI-Chess Team, and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than the ttunpack decompression library. If you modify this program, you may extend this exception to your version of the program, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. What is GhostBuster? ==================== GhostBuster is an automated patcher which patches programs written and/or compiled before the introduction of the new Hardware 3 to work with the new hardware changes. If you want to run a program that crashes or behave weirdly on your TI-89 Titanium, try GhostBuster on it. About copyrights and licences ============================= Before using GhostBuster, first check if the latest version of the program you want to patch is compatible with the TI-89 Titanium. If it is not, use GhostBuster and try to contact the author of the program to ask him to update it if he can. Please do not distribute any program patched with GhostBuster if the licence of the original program does not allow the modification and/or the redistribution of the binary file. Give instead a link to download GhostBuster (a link to ticalc.org's archives for example). Using GhostBuster ================= Send ghostb.89z and the program to patch to your Ti-89 Titanium. In the Home Screen, type : ghostb("","") [ENTER] where is the path to the program to patch (utils\demo, for example, but it can also be a single file name), and is the path to the file you want to create. must contain a valid file name, that must not exist on the calculator. The patched program will be created and stored with this name. If is "", will be replaced by the patched version of the program. GhostBuster may display that the program doesn't need to be patched: won't be created. If the program cannot be run on your TI-89 Titanium, the problem is beyond GhostBuster's scope. See section "Related tools" of this file, or contact the author of the program at issue. Patching compressed programs ============================ Many programs are compressed with TI-Chess Team's ExePack technology. If it is the case, you will find two files in the archive of the program you want to patch: a launcher (a .89z file) and a compressed file (a .89y file with a 'ppg' extension on the calculator). To patch a compressed program, enter the path to the compressed file for , not the path to the launcher! GhostBuster will automatically decompress your program (in order to be able to patch it), so you won't need a launcher, you can therefore delete the launcher. If you want to compress the patched program, download the compression kit included in the TIGCC Tools Suite (ttppggen) which can be found on TICT web site (http://tict.ticalc.org) , and read the documentation. You won't really need to do this anyway, since the archive memory of the TI-89 Titanium is huge enough to keep all the programs you use uncompressed. Patching kernel-based programs ============================== Kernel-dependent programs and libraries can be patched by GhostBuster as well. If the files you want to patch are compressed in PreOs archive packs, use the PreOs archive pack unpacker (zunpack). You need to unpack your archive packs with zunpack in order to patch them. Of course you still need a kernel compatible with the TI-89 Titanium to run the patched programs (see section "Related tools" of this file). GhostBuster's command line options ================================== An optional third argument of GhostBuster is a string containing one or more of the following options: ram: do not archive . Without this option, will always be archived if there is enough memory. all: try to patch all the ASM and PPG files of the calculator. Arguments and won't be read, you can put empty strings there. Programs with a name starting with "_" (for example "_test") will not be patched (this can be useful if you want to exclude some programs from a massive patching). Examples: GhostBuster("test", "", "ram") -> program "test" will be replaced by its patched version that won't be archived. The two options can be combined with the character '|': GhostBuster("", "", "ram|all") -> GhostBuster will try to patch all the programs of the calculator, replacing each file which can be patched by its patched version in RAM. The TI-89 Titanium has a special key for '|' ("with"). Technical details ================= The fixes done by GhostBuster on the programs it patches are: * ROM_base computation (incorrect 0x600000 mask, should be 0xE00000) and assumptions that ROM_base is 0x200000 on all TI-89 variants (whereas it is actually 0x800000 on the Titanium) * elimination of all types of 0x40000 ghost space use. Related tools ============= The sole task of GhostBuster are described in the previous section. You will perhaps need other tools to solve all the compatibility issues that have arisen with the TI-89 Titanium. To use memory-resident programs (TSRs), programs which depend on dynamically-linked libraries (DLLs) or use nested function trampolines, install HW3Patch. To run kernel-dependent programs, try Iceberg (that also requires HW3Patch), or the official port of the kernel PreOs for TI-89 Titanium when it is released. Contacting the authors ====================== Please ask your questions, report the bugs, list the programs you have found which can't be patched, or are not patched correctly by GhostBuster to its authors: Olivier Armand - Kevin Kofler - or Report any programs that still don't work after patching them with GhostBuster _unless_: * the crash is a black bar crash with no text in it and you didn't install HW3Patch. Try again with HW3Patch. * the program is a kernel-based program and you tried it with TitaniK. Try again with HW3Patch and Iceberg. History ======= 2004-08-11 Kevin Kofler: * Included zunpack in the distribution. * Rebuilt with TIGCC 0.95 Beta 16. (Saves 6 bytes.) * Version 1.00. 2004-07-15 Olivier Armand: * Added a complete documentation. * Replaced option "replace" by an empty string as outfile. * Allowed kernel libraries to be patched. * Changed the copyright notices. 2004-07-14 Kevin Kofler: * Fixed the offset for the DLL support patch. 2004-07-14 Kevin Kofler: * Added correct handling of move.l #0x400xx,%an; adda.l %am,%an. * Widened the range for adda/addi #0x40xxx,%an/%dn from 0x3fffe-0x40010 to 0x40fff. 2004-06-25 Kevin Kofler: * Added patching of move.l x(%pc),%an; bset.b #2,1(%an) sequences. 2004-06-22 Kevin Kofler: * Removed infinite loop left from debugging. 2004-06-21 Olivier Armand, Kevin Kofler: * First release.