The Ultimate TI Calculator FAQ - TI-83 and TI-84 (regular, Plus, and Silver Edition)

by Patrick Davidson ( pad@ocf.berkeley.edu) - Return to FAQ index - Return to my main page - Twitter - YouTube
  1. How do I run assembly programs on the TI-83?
  2. How do I run assembly programs on the TI-83 Plus and TI-83 Plus Silver Edition?
  3. How do I run programs on the TI-84 (in its various editions)?
  4. What about programs that don't use any shell?
  5. What about flash applications?
  6. Can I run TI-82 programs on the TI-83+?
  7. TI's manual for the TI-83+ mentions an AsmComp command, does this mean I can compile assembly on the calculator?
  8. Why is it very difficult to convert certain TI-83 programs to run on the TI-83+? What is the 8K limit on the TI-83+?
  9. How well do TI-83 Plus programs run on the TI-83 Plus Silver Edition?
  10. Where can I get assembly programs that take advantange of the extra speed of the TI-83 Plus Silver Edition?
  11. Why does the TI-83+ Graph-Link software accept only *.8xk files?
  12. Should I send files to RAM or archive of the TI-83 Plus?
  13. Why do I get a syntax error whenever I try to run an assembly program?
  14. What is garbage collecting? Do I need to worry about it wearing out my flash memory?
  15. I tried to send the A program to another calculator, but it doesn't work. How can I send Ion between calculators?
  16. I installed Ion, but nothing happens when I run it! What is the problem?
  17. Why does my program appear in the PRGM (program) list instead of the APPS list?

How do I run assembly programs on the TI-83?

The TI-83 does have built-in assembly capability which allows you to run assembly programs directly. However, running programs by the built-in methods wastes a lot of memory, so shells were written which have different formats, and load programs in different ways, to avoid wasting memory and provide other features (such as libraries) for programs.

Most current programs for the TI-83 calculator are written for the Ion shell by Joe Wingbermuelhe which exists on both the TI-83 and TI-83 Plus. Ion takes about 1.5K of memory. Developing for Ion has the advantage that you can easily make programs that run on the TI-83 or TI-83 Plus. There are also numerous Ion-compatible shells available on ticalc.org, which should generally run most Ion programs, and also may have various minor additional features.

To install Ion, you must send the supplied group file (ION.83G for the TI-83 version) to your calculator. Then, you have to run the 'ION' program to install the shell. After it has been installed, run the 'A' program to start Ion. Then select an Ion program from the list that is shown to run it.

If you don't want to send Ion to another calculator, you can erase the original files (ION, ZMION, AND ZMINFO) after installing Ion to save a little bit of memory, but you must keep the A and 0ION files.

Ashell 83 and SOS are two older shells for the TI-83. Most programs for these shells have now been converted to Ion, so in general, if you want to run a program for one of them, you should try to get the Ion version instead (which is likely to be better updated).

If you have one of the few such programs that doesn't also have an Ion version, you will need to install the appropriate shell on your TI-83 to run them.


How do I run assembly programs on the TI-83 Plus and TI-83 Plus Silver Edition?

The environment for running assembly programs is essentially the same on these two calculators. Virtually all programs written for one will work on the other with no difficulties. Since the Silver Edition has more memory and speed, a program designed to require these features might not work properly (or at all) on a regular TI-83 Plus. However, very few (if any) such programs exist.

These calculators do have built-in assembly capability which allows you to run assembly programs directly. However, running programs by the built-in method wastes a lot of memory. Most programs are written for shells which reduces the program's memory use when running, and also provide other features (such as libraries) for programs.

Older programs were usually written for the Ion shell by Joe Wingbermuelhe which exists on both the TI-83 and TI-83 Plus. Ion takes about 1.5K of memory. Developing for Ion has the advantage that you can easily make programs that run on both the TI-83 and the TI-83 Plus calculators (and such programs now work on calculators up to the TI-84 Plus Silver Edition). The other shells are Ion-compatible so a program written for Ion can be used even if you have a different shell

To install Ion, you must send the supplied group file (ION.8XG for the TI-83 Plus version) to your calculator. Then, you have to run the 'ION' program to install the shell. After it has been installed, run the 'A' program to start Ion. Then select an Ion program from the list that is shown to run it.

If you don't want to send Ion to another calculator, you can erase the original files (ION, ZMION, AND ZMINFO) after installing Ion to save a little bit of memory, but you must keep the A and 0ION files. However, it is probably a good idea to put the original files in archive so that you can re-install Ion in case your RAM is reset (you will need to temporarily unarchive them to re-install Ion).

A newer shell for these calculators is MirageOS, written by Detached Solutions, which is not a regular program, but instead is a flash application. Since it's a flash app it takes 16K of memory instead of only 2K or so like other shells, which may be a problem for the plain TI-83 Plus but probably doesn't matter on the TI-83 Plus Silver Edition (or any variety of TI-84 Plus) since they have so much storage. MirageOS can run Ion programs, and has some extra additional features such as a folder-based file manager. It also can run some TI-82 asm programs (though this isn't very useful, as most TI-82 programs also have an Ion version). MirageOS can run Ion programs but also has it own format for programs which will not work on Ion. You may need to use MirageOS if you want to certain programs that are available only in MirageOS versions.

An even newer shell is Doors CS which is a flash app as well. It can run both Ion and MirageOS programs, and has its own format too. You will need to use Doors CS if you want to run programs specifically written for it.


How do I run programs on the TI-84 (in its various editions)?

These calculators are quite similar to the TI-83 Plus Silver Edition in most ways. They should be able to run nearly all programs made for the TI-83 Plus. They should be run in the same way as on the TI-83 Plus (see the previous section). Note that if you are using MirageOS, you need at least version 1.2 for full compatibility with the TI-84.


What about programs that don't use any shell?

There are very few significant assembly programs for either of these calculators which don't use any shell. If you do happen to find such a program, you can run it on the TI-83 by running the command "Send(9prgmNAME" from the home screen (or a Basic program). On the TI-83+, the command to use is "Asm(prgmNAME".


What about flash applications?

Flash applications are similar to asm programs in that they are stored as machine code. However, they have many differences, such as:

To run flash applications on your calculator, press the APPS button to bring up a menu of the installed applications. Then select one to run it.


Can I run TI-82 programs on the TI-83+?

MirageOS does have some support for emulating TI-82 programs. However, it is not 100% exact, and thus some TI-82 programs will not work properly on it. Most TI-82 programs also have Ion versions, so it is not usually necessary to use TI-82 emulation.


TI's manual for the TI-83+ mentions an AsmComp command, does this mean I can compile assembly on the calculator?

No. Even though it is called "AsmComp(", it does not really compile assembly code. Instead, it takes machine code in what TI calls "ASCII" format and converts it into what TI calls "hex" format.

These names are actually quite misleading. The so-called ASCII format contains the program expanded in hexadecimal format as text in a regular program (e.g. the program contains stuff like ":AsmPrgm:1C7DE48965E30D" - don't try to run this program though) and the "hex" format is actually raw binary machine code which the processor executes (any program in the "ASCII" format will have to be temporarily converted to this when run).

To successfully enter as ASM program, you would have to type it in using the "ASCII" format of it, which means that you would have to see the machine code version of it, most likely by assembling it on a computer and viewing the output of the assembler (or by examining the assembled version of a program that was already released). You also could write programs in hex yourself if you had the instruction set table (which you can find in ticalc.org's informational files if you really want it) but this is not really very practical for programs of significant size.


Why is it very difficult to convert certain TI-83 programs to run on the TI-83+? What is the 8K limit on the TI-83+?

Apparently in order to prevent unauthorized copying of flash applications, TI added a limit to the size of normal assembly programs, in the form of a hardware device which prevents executing code outside of a certain area.

The limit is really a 16K limit; that is, code can be run anywhere within the first 16K of memory. However, part of this area is used for system data; beginning at the normal start address for assembly programs, there is about 8.8K of memory in which code can be stored. This is not an actual limit on the size of a program; programs can work if they are larger than this, as long as the area after the first 8.8K contains only data.

Furthermore, the implementation of Ion's libraries makes the problem somewhat worse for Ion users. Ion copies the code of its library routines after the end of the program. Thus a program calling library routines can run past the limit if any of the routines it uses are put past the boundary, even if all of the program's code fits in 8.8K. MirageOS does not have this problem.

Unfortunately, some TI-83 programs cannot fit within this limit and thus can't be easily converted to run on the TI-83+. It is possible to work around this limit by swapping code into the "acceptable" areas only when needed, allowing the program to contain a total of more than 8.8K of code. This does take some extra time, so it should not be used during the main loop of a game; however, switching between code used for each different level of a game, the title screen, and the high score screen would not be a problem. This has been used effectively by The Void Productions to port Dying Eyes, an RPG, to the TI-83+.


How well do TI-83 Plus programs run on the TI-83 Plus Silver Edition?

TI-83 Plus programs should work well on the TI-83 Plus Silver Edition. The TI-83 Plus Silver Edition's normal functioning is about the same as a regular TI-83 Plus, except that it is about 2.5 times as fast and has much more storage. Math operations and basic programs should run the same as before, only faster. Assembly programs (and flash applications) are run by default with the calculator slowed down to TI-83 Plus speed for maximum compatibility. Thus TI-83 Plus programs should work fine. People who should know have reported that both MirageOS and Ion work fine on the TI-83 Plus Silver Edition. Nonetheless some users have reported problems with them. I'm not sure of the exact situation since I don't have a TI-83 Plus Silver Edition myself to test it with.


Where can I get assembly programs that take advantange of the extra speed of the TI-83 Plus Silver Edition?

At the moment there are not many such programs available. However you can at least do all the math operations much faster. Math applications probably will switch to maximum speed on the TI-83 Plus Silver Edition as well. However, games probably won't do this because most people wouldn't want to play them at 2.5 times the normal speed. Of course, more complex games could be made which function at full speed only on the TI-83 Plus Silver Edition, but it remains to be seen if many such games will be made (programmers might prefer to keep TI-83 Plus compatibility instead).


Why does the TI-83+ Graph-Link software accept only *.8xk files?

This is probably because you have tried to use the "Send Flash Software" option. This is only useful for sending flash applications, their certificates, or operating systems. For normal files, use "Send To" instead.


Should I send files to RAM or archive of the TI-83 Plus?

In general, it is probably best to send files to the archive memory. The TI-83 Plus (and Silver Edition) have much less RAM than archive, and the RAM is likely to fill up if you try to store everything there. Basic programs normally run out of RAM, so you will have to place them in RAM before running them. Assembly shells will generally copy the program to RAM before running it, so this is not a problem for them.


Why do I get a syntax error whenever I try to run an assembly program?

Most likely, you have tried to run it as you would a basic program, which is not the right way to do so. Refer to the beginning of this document for the correct way to run the program.


What is garbage collecting? Do I need to worry about it wearing out my flash memory?

Garbage collecting refers to reorganizing the flash memory. Each time a new file is placed in flash memory, it is stored after the end of the last file. If a file is removed from flash, it is marked as deleted, but the space it occupied will not be reused immediately. Unlike RAM, which is moved around to have no "gaps" in used space whenever a file is deleted or resized, the flash memory will only be rearranged once it is all full. When this happens, the calculator will ask if you want to garbage collect the memory. Generally you should always choose "Yes" as otherwise the memory access will fail. Unfortunately this process can take a while.

If running assembly programs from a shell, you may need to do this often; in order to save any changes to the data in the program, the shell will normally delete the program and copy the (possibly modified) program back to flash memory after you exit. If you run the program many times, this will "use" all the space in the flash memory, making garbage collection necessary. Some people seem to worry that this will wear out the flash memory, since it requires erasing blocks of it so that they can be written to again, and the memory is only designed to be erasable a limited number of times. However, this probably not a realistic concern, as the flash memory can be erased at least 100,000 times.


I tried to send the A program to another calculator, but it doesn't work. How can I send Ion between calculators?

The normal sending procedures (as described in the calculator's manual) will work for sending most programs. However, you cannot send the Ion "A" program this way and have it work, because it requires that Ion is installed. In order to send Ion from one calculator to another, you must send the original Ion files to the other calculator, and then use those to install Ion on the other calculator.


I installed Ion, but nothing happens when I run it! What is the problem?

First, make sure that you have installed and run Ion in the correct way (refer to the top of this document). If it has been successfully installed, the message "Ion installed" should have appeared when you tried to install it.

If you have no Ion programs on the calculator, then running A to enter the Ion shell will just clear the screen and display "Done". Keep in mind that (unlike with basic programs) Ion programs for the TI-83 are different than for the TI-83 Plus; you must use the TI-83 Plus version (with .8xp or .8xg extension) for any Ion program.

A few people have reported that even when the correct programs are on the calculator, it still acts as if there are no Ion programs installed. This might happen because the programs are corrupt; you could try to re-send the programs, or send other programs. It has also occassionally been reported to me that Ion sometimes strangely ignores programs that should be fine in some cases but not others; some people have said that it shows no programs at all in some cases even when there are a few, but then sending just one more program causes all of them to appear. I am not entirely sure whether this is really a problem in Ion or just some mistake by the users that I couldn't identify, but it is worth trying to send more programs to see what happens if you have tried everything above. If you notice this sort of thing, it is a bug, so you should probably report it to the authors of Ion. I would also like you to mail a copy of your report to me, so I can try to figure out what (if anything) is really going on to put some more definite information here.


Why does my program appear in the PRGM (program) list instead of the APPS list?

Because it's a program, not an app. This is where it should appear. If it is a basic program just select it directly from the program menu and press enter, otherwise run it from a shell as described above.