This section summarizes the steps needed to get nearly every asm program to work on your calculator. More details about all of these things (and various minor issues) are available in the later sections.
First, learn how to run a program. Files for the TI-89 and TI-89 Titanium have extensions starting with .89 on your computer, and files for the TI-92 Plus and Voyage 200 have extensions starting with .9x (a handful of files specifically for the Voyage 200 have extensions starting with .v2). Be sure to send both the program file and any data files supplied with it. For these calculators, starting a program is the same for basic and asm programs; type the program name, followed by opening and closing parentheses, and then press enter. For example, if the program is called mercury (which just happens to be a game by me) then type mercury() and press enter to run it. If the program doesn't require a kernel or anything else installed, and is compatible with your calculator, this is all that you need to do to get it to work (and it just so happens that Mercury doesn't require such things and is compatible with all hardware and AMS versions).
If you don't feel like typing the whole program name, you can select it from the var-link menu. Also, you can use the var-link menu to archive programs. It is generally best to keep programs in archive, since the archive memory is retained even if your calculator is reset.
The above is everything that's necessary. However, there are certain common mistakes you might have made, so to protect you, here is a list of how to avoid them:
A "nostub" program is simply a program that doesn't require a kernel to run. These programs can simply be copied to the calculator and run; you don't need to install a kernel first (though some of them are distributed as more than one file in which case all files may need to be copied).
A "doors" program (or more properly, a "kernel" or "kernel-based" program) is one that does require a kernel. To run these, you must install a kernel on your calculator first. They also frequently require libraries (as linking with libraries is a feature supplied by the kernels) so you may need to copy the required libraries to the calculator. Most older games require kernels, but newer games and most non-game programs are nostub programs.
Also keep in mind that many people use the word "shell" to describe what is really more accurately called a "kernel".
More information on using both kinds of programs is provided in the following sections.
If you have a TI-89 Titanium, be sure to read the TI-89 Titanium section as well for information on specific problems that exist with that calculator.
To run a nostub program, copy the program file to the calculator and run it (if the program includes data files, you should send them also). The program files are those with .89z or .9xz extensions on the computer, and data files (or compressed program files) usually have .89y or .9xy extensions. To run a program named thisgame, type thisgame() on the home screen, and press enter. You can also select the program from the var-link menu to avoid having to type the whole name. Additionally, you can rename the prgm to kdbprgm1 to allow you to run it by only pressing diamond and then 1 (you can do a similar thing for other numbers). Note that the calculator can have multiple folders, so be sure you're running files from the right folder (by default, there is only one folder in which case this problem won't happen).
For nostub programs, nothing else is required. If you have a kernel-based program, you must however have a kernel installed before you run the program. If you try to run a kernel-using program without a kernel installed, it will simply do nothing.
If you see an error message that says "ASAP or exec string to long", then you are suffering from the size limit on assembly programs that has been imposed by TI. This limit prevents running assembly programs over a certain size.
If this error message appears when trying to run a nostub program, you will have to circumvent the size limit. Most nostub programs over the size limit include short "launch" or "run" programs which you can run to do this. If not, there are several things you can do. You can install a kernel (as discussed below) which will completely remove the size limit. You can also run another program which will circumvent and launch the program, such as TTStart. Finally, you can switch to using another AMS version; if you have AMS 2.03, then your size limit is 8K, but you can increase it to 24K if you switch to AMS 2.04 or above. If you switch to the older AMS 1.05 (or AMS 1.00) then you will have no limit.If a kernel-using program is over the size limit, then you will see the same error message as you get when you run a nostub program that is over the limit.
On the calculator's home screen, go to the F1 menu, and then select About. If the box says "Hardware Version 2.00" somewhere in it, then that means you have hardware version 2 (commonly abbreviated HW2). If you do not see any message, then you have hardware version 1 (HW1).
Note that every calculator that was originally a TI-92 Plus has HW2. You will only get a HW1 TI-92 Plus if you take a regular TI-92 and upgrade it with the Plus Module.
The AMS is the main software supplied by TI that is kept in the calculator's Flash ROM. AMS stands for "Advanced Mathematics Software". It is also called many other things, such as "TIOS", "OS", "product code", "product software", "base code", "ROM", "ROM software", "operating system", and probably several other things as well.
You can get a copy of the newest AMS version from TI's official web site.
The hardware of a Voyage 200 is essentially the same as that of a TI-92 Plus with HW2, except for the amount of flash storage. Likewise, the hardware of a TI-89 Titanium is similar to that of a regular TI-89. However, these calculators do present some additional problems which will be explained below.
HW1 is the original hardware version of the TI-89, which does not have the ability to limit the size of user programs, and handles the display by reading the video buffer each time the LCD is refreshed.
HW2 is in later TI-89s, and in every TI-92 Plus made. This is supposedly an improvement, though it also can cause some problems. Among other things, the display now doesn't scan the buffer constantly, but instead only registers writes to the buffer. This does improve the speed but long ago caused problems for grayscale, which have now been solved.
HW3 usually refers to the TI-89 Titanium. It is similar to an HW2 TI-89 for most purposes, but has more storage and a USB port.
The HW2 calculators are indeed faster than HW1 calculators. Perfoming the same computation on both calculators takes about 2/3 as long on HW2 as it does. By timing a software delay loop that ran for a couple of minutes, I estimated the clock rates at 9.4 Mhz on HW1 and 13.1 Mhz on HW2. However, since the HW1 calculator's display may slow down the processor due to contention for memory access, the actual clock rate is likely faster.
The TIOS normally allows all of the flash memory to be used for either variables or applications if you have HW2, but if have HW1 only part of it is allowed for variables, but the rest is for applications only. This limitation can be overcome with MaxMem, a program by Julien Muchembled.
The most annoying feature is that HW2 has hardware to enforce the size limit on programs that some AMS versions have (see below) by preventing code from being executed in certain areas. This isn't a huge problem since it is readily defeated by programs. However it caused trouble long ago since it was once necessary for HW2Patch (a program that modifies the AMS to disable this) to be updated for each new AMS version.
Finally, the timer interrupts run at a different rate on HW2, causing programs that are synchronized to them to run at two-thirds the HW1 speed when run on HW2 calculators, unless the program accounts for this difference. Thus even though HW2 is really faster, it may very well seem slower. This is probably a rare problem and most programs should now deal with it.
Several years ago, these differences caused many compatiblity problems, especially with games, but now almost all games will work on either HW version (once the size limit is defeated, which is no longer difficult).
Both hardware versions have protection against user programs modifying the ROM, although these protections have been defeated by software.
HW2 also includes a real-time clock, which can only be used with AMS 2.07 or above.
If you want to be able to run very old programs, you will probably have best results if you get the oldest AMS version possible. However, you might want to get AMS 2.03 (or above) to gain archive protection capability, at the expense of some program compatiblity. If you plan to use programs made by TI's SDK (very few utlities were made with it, and no significant games) then you will need to use AMS 2.04 or higher. Many recent flash applications (and a few utilities) may require even higher versions.
If you follow the recommendations of this FAQ, compatibility problems should almost never occur with AMS versions up to 2.09. Nearly all games can now be made to work even with AMS 2.09. However, if you have a TI-89 Titanium there will still be a few problems. When it comes to non-game programs, there may actually be more incompatibility with very old ones, but recent ones should be fully compatible, except when they try to hook into the OS, which may require updates for each new AMS version.
New versions of the AMS also include some minor enhancements in math functionality (and a slightly nicer var-link menu) and may have some bug fixes. However, all of the important math features exist even in older versions.
These words are used in different ways by different people, and often lead to confusion. The following definitions explain how they are best used in reference to to the TI-89, TI-92 Plus, and Voyage 200.
A kernel is a program that you must install to run certain other programs. A kernel normally exists in the background without having any effect on the rest of the system, except when you try to run a program that requires a kernel. Quite a few kernels have been released, but they all provide the same basic features (there are some exceptions, but they shouldn't matter to most users) so you only need to run one of them. The most current kernel is PreOS (see the next section). An older (and now obsolete) kernel is DoorsOS; some people refer to kernel-based programs (those that require kernels) as DoorsOS programs because of its past importance, which creates a great deal of confusion.
The main function of a kernel is to provide certain features to programs that help programmers somewhat. These things can be done without a kernel as well; requiring a kernel is a choice by the programmer. Kernels were more popular in the past than they are now.
A shell is a program which displays a list of other programs from which you can select and run the other programs. Many of them provide more advanced featuers, such as file-management functions. Shells and kernels are often confused since some people use "shell" to refer to kernels as well. This is a bad idea since (on the TI-89, TI-92 Plus, and Voyage 200) these are different categories of programs that do different things.
Adding to the confusion is that there is a shell called Doors which is distributed with DoorsOS. Doors is a shell while DoorsOS is an obsolete kernel. They aren't the same thing.
Note that these defintions are not the same as on Unix/Linux. For calculators, a kernel is not the core of the operating system, but rather a small utility. The kernel does not replace TI's software, which still runs as before while the kernel is installed.
These definitions are not the same as on other TI calculators either. Things called "shells" on the Z80 calculators (TI-82 through TI-86) do provide shell-like features as described above. However, the shells for Z80 calculators (except for some TI-86 shells) also provide some kernel-like features, as well as often giving some library routines which are in the shell itself. These shells are usually necessary for running programs made for them (most programs on the TI-83 and TI-83 Plus, and all programs on the TI-85 and TI-82). Also note that on the Z80 calculator different shells/kernels are not always compatible with each other, while on the TI-89, TI-92 Plus, and Voyage 200 they usually are.
Which kernel should I use? How do I use it?
If you have a TI-89 Titanium, be sure to read the TI-89 Titanium section as well for information on specific problems that exist with that calculator.
PreOs is the most updated kernel and is almost always the best choice. It is fully compatible with all hardware and AMS versions. If you have a TI-89 Titanium, you must send and run HW3Patch first. To install PreOs on the calculator, send the "preos" and "stdlib" calculator files to the calculator, and archive them. Then run the "preos" file (as any other program, by typing "preos()") and you're done!
A somewhat older kernel is Universal OS. If you want to use this kernel, HW2Patch or HW3Patch must be installed first if you have *both* hardware version 2 and an AMS version higher than 1.05. Note that Universal OS does not support the TI-89 Titanium, and is not currently being maintained. If you still want to use it, send the "install" and "kernel" files and then run the "install" file.
Once the kernel is installed, you should see a small message informing you that it is installed. The kernel should stay installed until your RAM is reset. If that happens you need to install the kernel again. In order to make sure that you can reinstall it when needed, it is best to keep the kernel files on the calculator and archived. PreOs requires the files be archived before installing.
Many kernel-using programs also require libraries in order to run. The stdlib file included with PreOs includes nearly all commonly used libraries. Some, but not all, commonly used librarie sare built-in to Universal OS.
Though DoorsOS may have been useful in the past, this is no longer the case. DoorsOS (and TEOS also) have severe compatibility problems. Their authors have long since abandoned calculator programming, so no updates can be expected. In particular, if you have AMS 2.04 or above, TEOS is incompatible, and if you have AMS 2.05 or above, DoorsOS is also incompatible (except for a beta version that was never publicly released which should work with AMS 2.05).
PreOs, on the other hand, is still being updated, and the current version now supports the TI-89 Titanium and the most recent AMS version, 3.10. Both PreOs and Universal OS worked on AMS 2.07, 2.08, and 2.09 as soon as these AMS versions were released, since their designs are more compatible. Universal OS even worked with no problems when AMS 2.05 was released long ago (PreOs didn't exist then).
Also, PreOS and Universal OS support grayscale under HW2 much better; the built-in UniversalOS grayscale library, as well as the library supplied with PreOS, use a better technique for grayscale under HW2 than is used in the libraries used with other kernels, so graphics will be much more stable. Thus on any HW2 calculator, regardless of the AMS version, one of these kernels certainly should be used.
DoorsOS is still very popular, primarily due to tradition, since it is the oldest of the currently used kernels. Also, the ticalc.org file archives once labeled the kernel-using programs section as the "doorsos" section (again, probably because it is the "traditional" kernel). This caused problems for many users who assumed that DoorsOS is a good idea, and then run into problems as a result.
Many older programs say that they were written for DoorsOS or that they require DoorsOS. In most cases this actually means they were written for or require a kernel, and not that DoorsOS is the one that should be used. All kernels use the same program format (for the most part; some programs for PreOS may use an extended format that won't work on other kernels), so even if a program is written for DoorsOS (or is a "doors" program) it can still probably be run on the other kernels as well. Unless the manual of a program specifically states that it will fail under other kernels, you probably don't need to choose DoorsOS for that program.
Unlike kernels, shells are never required for the calculator. Their usual purpose is to help you manage files and launch programs. These things can be done without them; you can run programs just by typing their names. Additionally, the main features of a shell are also provided by the built-in var-link menu of the calculator.
Nonetheless many people like to use them for convenience or other reasons. If you want one you can find several in the archives of sites like ticalc.org. There is a small shell (Preos Browser) built-in to PreOs.
A library is a file which provides (one or more) routines for use in other programs. This section refers to external (or "dynamic") libraries; that is, libraries which are kept in separate files rather than being put in the executables of programs that run them. Libraries are usually designed to be usable by many different programs. Since this allows only one copy of the routine to be on the calculator, instead of having it in each program that uses it, this can save memory.
If a program requires a library, you must have a copy of the library on the calculator in order to run the library. In the past libraries were associated with kernels, as kernels provide library linking and nearly every kernel-based program used at lesat some basic libraries. However, there are now some nostub libraries as well (in this case, library-linking code is included in the programs that use the libraries).
Universal OS has most of the standard libraries built in to the kernel, but allows external libraries as well. PreOs has a "stdlib" file included with it, which contains a larger number of libraries. These should be enough for most programs.
If a program requires additional (less common) libraries than these , they will usually be included with the program, or at least the documentation should tell you which ones are needed. Some shells also list libraries a program requries.
If you try to run a program which needs a library that you don't have, you should see an error message indicating the name of the lbirary that is missing. Then you can try to search for it. If you can't find it anywhere in the program archive, then search on ticalc.org and other archives sites.
HW2Patch is used to disable the hardware size limit on HW2 calculators. This is required to install kernels other than PreOs (which has its own way of beating the limit built-in).If you don't install HW2Patch, the calculator will probably crash if you try to install a kernel other than PreOS.
HW3Patch does the same thing, but works on the HW3 (that is, TI-89 Titanium) calculators in addition to HW2 calculators. TI-89 Titanium users don't need it before installing a kernel, since the only up-to-date TI-89 Titanium kernel is PreOs. However, it is required for some nostub programs such as TSRs or DLLs. The program's documentation should mention if it is required.
Such programs are not needed if you only want to run nostub programs which are under 8K on AMS 2.03, or under 24K on AMS 2.04 or above. It is not needed at all on AMS 1.05, which has no size limit. It is also not needed for nostub programs that are started by a launcher that defeats this, such as ttstart, or those included with nearly all compressed programs.
You can download HW3Patch from the website of the author, Kevin Kofler. To install it, send it to the calculator and run it like a normal program (by typing "hw3patch()" on the home screen).
Note that older versions of HW2Patch and HW3Patch don't support newer AMS versions, so if it doesn't seem to work, first check that you have the newest HW3Patch. For a long time, it was necessary to follow a rather annoying procedure to patch AMS 2.05 calculators, requiring obtaining an older AMS version, modifying your copy of AMS 2.05 on your computer, re-flashing the calculator twice, and running a special program to receive the modified AMS. This caused a lot of problems for many users. Fortunately, it is no longer necessary!
If you have AMS 2.07 or above, however, even the newest HW2Patch will not work. However, you can use the new HW3Patch which works with the TI-89/92+/V200 as well.
The best solution is probably to realize that you don't need it. If you follow the recommendations in this document, virtually every program can be run even if your version is as new as 2.09.
If you really must have an older verison, it may not entirely easy to get it. The older versions were once distributed freely on TI's web site (when they were new) but they only supply the most recent version so older ones are no longer available. Many web sites have offered older versions for download, but TI does not approve of this and has threatened some of those sites with legal action, resulting in most of them being shut down or removing the ROMs.
One way to obtain an older AMS is to get it from another calculator. If you have access to another calculator that has the older AMS version, you can transfer it between calculators through the calculator-to-calculator link.
You also can reportedly get these from TI through E-Mail by request. To do this, send E-Mail to email@example.com informing them that you want an older AMS version because of program incompatiblity with the one you currently have. You should get it within a few days. Note that the file will be over a megabyte in size, so be sure you are able to receive large e-mail attachments.
Since TIB Receiver allows receiving an entire AMS image which is not authenticated by TI, it is possible to install complete replacement images. Time To Team has a project called 'PedROM' to make a ROM replacement. The current version will run most games but it has very limited math capabilities.
No. HW stands for hardware, which means that it is the version of the hardware. To change this, you would need to replace the internal circuitry of the calculator.
This problem occurs when you try to run an older PPG launcher on a calculator with AMS 2.07 or above. This problem was fixed a while ago, but there are still some programs out there distributed with older launchers. This is usually the case for launchers that are 1601 bytes on the calculator and 1687 bytes in files on the computer (or very close to this). There are several ways to fix this:
There is one program, Propanoid68K, which has this problem and can't be fixed by these methods. However, it can be fixed by running Ghostbuster on it, which seems to work even for a regular TI-89.
Probably not. You just need to replace the batteries. If the calculator turns off whenever doing anything that uses the CPU continously (like a calculation that takes a significant amount of time, or playing a game) then low battery power is almost certainly the cause.
If you have run a program which has locked up, you may be able to use 'escape' mechanisms of various kernels (if you have them installed) or nostub launching utilities (if you used one). Under PreOS or Universal OS, press ESC and ON at the same time. Under DoorsOS, use STO and ON.
If that doesn't exit the program (or you have another kind of crash, like seeing a black bar across the top of the screen) then you will have to try to reset the calculator. The first thing to do is to press 2ND+HAND+ON on the TI-92 Plus or 2ND+LEFT+RIGHT+ON on the TI-89. If this does not work, you should then try removing all batteries (including the lithium backup battery) from the calculator to completely clear the memory. Using either one of these methods should still preserve archive memory, as described in the next section).
You should always report crashes in a program to the author of the program, as described in the bug reporting section of the FAQ.
It is possible to protect files from accidental crashes in almost all cases. To do this, you must store the files in archive memory, and use AMS version 2.03 or above (the newest version is available from TI's web site. Then, the archive memory will be preserved after the calculator is reset. There is also a program called Archive Utility which can allow you to preserve the archive under older versions, but it is not compatible with all calculators and there is now little reason to avoid newer AMS versions.
There is also 'crash protection' provided by kernels that may allow you to recover from crashes, and some programs have built-in crash protection also. These may work, but you should not rely on them to protect files in RAM.
Source Guru is a program that I wrote, intended to demonstrate the possibility of automatically converting programs for the TI-85 to run on the 68000-based calclators. It did succeed in that purpose, as it made working conversions of several programs. But they are not really intended for general use, and they are probably not as good as the TI-85 equivalents. They also might have some compatibility problems.
GTC is a flash app that enables development on the calculator on C or assembly language.There is an older assembler that runs on the calculator, called as92, written by DBA (Deep Brain Activity). This is a fairly complete assembler, though you should of course read its instructions to learn about its specific limitations. It also requires a kernel.
Keep in mind that your own programs, when first tested, are much more likely to crash than any programs you get from others, which have already been through initial testing. For this reason, be sure to protect all of your important data (including the kernel, the assembler, and the source code) as described in the data protection section.
Unfortunately, the hardware design HW2 originally caused some difficulties for using grayscale with it (especially since it wasn't documented). However, these problems have been solved long ago and HW2 calculators can now display relatively steady grayscale (in 4 colors) just like HW1 calculators can.
For grayscale programs using the gray4lib or graphlib libraries, use an updated kernel, and grayscale should work without any problems. For other programs (primarily ones written in C which use the grayscale routines included in TIGCCLIB), you may be temporarily out of luck. Since these have the grayscale code built-in, you can't use the new, better grayscale just by replacing external libraries. This problem can now be fixed, as a new version of TIGCCLIB including the better method of displaying grayscale has been available for quite some time. However, programs will need to be recompiled with the new library to take advantage of it, so you may need to wait for new versions to be released (of course, if the program is supplied with source code, you could always recompile it yourself instead of waiting for someone else to release an updated version).
The .89k (and .9xk) formats are for flash applications. Most programs (except huge math and utility programs from TI's web site) are not flash applications, and thus are not normally given these extenstions. If you have this problem, you are probably trying to use the command of the Graph-Link software that sends flash applications. Since the program you want to use is a .89z or .9xz, it is a normal asm program, so you should use the regular send command instead of the one for flash applications.
In general, it is probably a good idea to keep all programs in archive memory, and use RAM just for temporary storage (e.g. variables and equations you are working on, which will be created in RAM by default). The amount of archive is much greater than the amount of RAM, and many programs need lots of RAM free when running (many programs need lots of RAM to decompress there code and/or data, to store screen buffers, or for other temporary data storage; additionally, an archived program is copied to RAM to run, so you'll need a lot of free RAM if you want to run any archived program). RAM is likely to be erased if a program crashes, and you may need to reset it if a program malfunctions in a way that disrupts the calculator's operation. However, files in archive are much more protected, so they can survive if the calculator crashes.
The .89y and .9xy files are for "other" filetypes; that is, files which are not one of the standard calculator's types, but instead user-created types which are used by certain user-created programs. Note that it is not necessary to use these types for a program's data; many games store their external level files and such inside regular data types, often in strings. If a program is distributed with .89y or .9xy files, they are probably ppg files.
The "ppg" file type on the calculator is normally used for exepacked programs. They are essentially nostub programs in compressed format devleoped by the TI-Chess Team. Such programs are normally supplied with a small launcher (in the form of a regular program) which will decompress and run the launcher program. The launcher also circumvents the size limits under some AMS versions so you don't need to worry about them when running such a program. If you are using TICT-Explorer or Explorer by Flavien Racine as your shell, then you don't need the launchers since that shell has support for running such programs included in it.
Note that some older launchers are incompatible with AMS 2.07 and above. If you find one of them, look at the "invalid relocation" question above.
In general, a Voyage 200 calculator can run the same programs as a regular TI-92 Plus. However, beware of the following compatibility problems:
Many older assembly (and C) programs available for the TI-89 must be patched in order to work on the TI-89 Titanium. However, recent programs may be compatible already, especially if released after the middle of 2004 or so. In addition to patching, special tools must be installed for TSRs or kernel-based programs to work. This is especially true for games but other types of programs also are likely to have problems. In most cases it should be fairly easy for programmers to their fix programs to work on the TI-89 Titanium, but this has not yet been done for some programs.
Fortunately, a set of programs has been released that will enable TI-89 programs to run on the Titanium. Here is a summary of the tools and when they are needed (to be able to run every program, you should use all of these):
Note that, as stated in the previous section, most of these compatibility problems can now be overcome. The compatibility issues depend on the program type, as follows:
The compatibility of C programs made with TI-GCC depends on what version of TI-GCC was used. The first Titanium-compatible version of the TI-GCC library was in version 0.95 beta 6, released on March 14, 2004. Therefore, if a C program was released earlier than this, it will probably fail. Newer C programs will probably work if they were compiled with a recent version of TI-GCC. However, some C programmers have compiled new programs with older versions of the compiler (especially since ticalc.org didn't replace version 0.94 until a non-beta 0.95 was ready) so newer C programs may have problems as well. Additionally, programs made with newer libraries still could fail if the program itself does something incompatible.
Most incompatible TI-GCC programs could be fixed by recompiling them with the newest version of TI-GCC. Programs made for much older library versions might need some changes to their source code to work with the new library. If there is incompatible code in the program itself (rather than just in the library routines used) that will also require the source to be changed, but such cases will probably be rare.
Ghostbuster should be able to fix all such problems stemming from TI-GCC library routines, and many of the problems from other sources as well.
Nostub programs in assembly language are likely to work if they don't use grayscale or try to install TSRs. However, more complex nostub programs (and some simpler ones as well) will not work until they are updated for the TI-89 Titanium. This generally requires changes to the source code.
Ghostbuster should be able to fix many of these problems as well.
Programs that require kernels to run will probably work if you use a current version of PreOs. The routines most likely to cause incompatibilities are in the kernel itself or in the libraries, which are now updated to work on the TI-89 Titanium. However some kernel-based programs still contain incompatible code in themselves.
Ghostbuster should be able to fix many of these problems as well.
Flash applications will usually work since most of them would never have attempted to do any of the things that updates are necessary for.
Here are the main problems that need to be dealt with to get ordinary programs (that is, not TSRs, launchers or kernels) to work on the Titanium:
The "ghost space" in RAM no longer exists. This means that any programs which tries to write to interrupt vectors by accessing memory at 0x40000+
The ROM starts at a different address than before. Many programs tried to find the ROM base by reading a RAM location and then ANDing with 0x600000. To correctly calculate it on all calculators, you must now use 0xE00000 instead. Many programs get the ROM base as part of checking the hardware version; now they may return incorrect results (falsely assuming the calculator is HW1) and might possibly crash. If the programs thinks you have HW1 then anything specific to the hardware version won't work, such as grayscale. This problem also existed in older TI-GCC versions.