The Ultimate TI Calculator FAQ - TI-86

by Patrick Davidson ( - Return to FAQ index - Return to my main page
  1. How do I run assembly programs on the TI-86?
  2. What are the benefits of using a shell?
  3. Can I run TI-82, TI-83, and TI-85 programs on the TI-86?
  4. Can I protect the contents of my TI-86's memory?
  5. How can I develop assembly programs on the calculator?
  6. Can I store more than 96K of variables on my TI-86?

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

You cannot run assembly programs the same way as you run Basic ones, though it is nearly as easy. You simply have to use the Asm() commmand to run them. For example, if the program is called thisgame, type the command Asm(thisgame) on the home screen to start it.

If you are really too lazy to type this every time, then you can create a Basic program which contains just this line, and you can also use shells (described in the next section).

What are the benefits of using a shell?

Shells are not required to run TI-86 assembly programs, but some people find them useful. A shell is essentially a program which displays a list of other programs on the calculator and allows you to select programs from the list to run them. The archives contain numerous shells for the TI-86. Many of them have additional features such as allowing you to delete or rename programs from the shell menu, organize programs into folders, "lock" the calculator with a password, and run programs written for other calculators.

Can I run TI-82, TI-83, and TI-85 programs on the TI-86?

There are programs on the TI-86 that allow running of programs written for these other calculators. However, they are not necessarily 100% compatible with all programs for the other calculators. Also note that most programs for the other calculators also have TI-86 versions so this capability isn't terribly important.

Several shells allow you to run assembly programs for ZShell, Usgard, and some other shells on the TI-86. Among these are ASE, Rascall, and YAS. According to my (rather limited) tests of these, YAS (Yet Another Shell) by Aaron Curtis provides the best support for TI-85 programs, allowing almost everything to run without any problems.

It is also possible to run programs for the TI-82 or TI-83 on the TI-86, but they have to be converted with special programs before they can run on the TI-86. TI-82 programs can be run from the ASE shell, and Ion programs can be run with the Ion86 programs. Ion86 is available from the TI-86 section of the Icarus Productions site. Since these calculators are more different from the TI-86 than the TI-85 is, the compatibility level with them will probably be less than with TI-85 programs.

Can I protect the contents of my TI-86's memory?

This is possible in some cases. The YAS shell, mentioned in the previous section, has an option to protect memory from being erased. There are also stand-alone programs such as Chmasc which allow you to recover memory after a crash or reset.

To use this program, you simply run it to install the protection. After the calculator is erased, you type in a small program (which it will show you when you install Chmasc) and run that to recover the memory. This program will recover memory from some crashes, and also works if certain "virus" programs have been run to erase the calculator.

Since assembly programs normally run with different pages of RAM available than those which hold the calculator's variables, a program that just writes to memory randomly will normally not corrupt the variables, which should allow them to be recovered. For this reason there is a high probability of successfully recovering memory if a program crashes.

However, it is not completely foolproof, as it is certainly possible (and easy) for programs to access the RAM pages containing variables, something which could potentially happen "by accident" when a program fails. For this reason, if you do recover your memory with Chmasc, it is possible that some programs are corrupted (in which case they might crash immediately if you run them, but might fail in less obvious ways as well) so you should replace all of your files with original versions as soon as you can.

How can I develop assembly programs on the calculator?

There is a program called ZAC (Z80 Assembly Compiler) which allows you to assemble programs on the calculator. You can type in assembly source on the calculator and use this to assemble it into an executable, which should make it possible to develop assembly programs on the calculator.

Unfortunately, there are several difficulties which you will face doing this. For one, assembly source files tend to be rather large, and if you try to make a large program it can easily overwhelm the calculator's memory (especially if you also want to keep several other programs on there). It is also somewhat difficult to edit the program text on the calculator's rather small screen. You can use text editors on the calculator which use the small font to help with this somewhat, but those still don't show a lot on the screen, and the small text looks ugly to some people.

This assembler is also somewhat limited in comparison to the 'regular' assemblers used on computers, as it doesn't support macros or conditional assembly, and can't evalute expressions either.

The biggest problem, of course, is the risk that the calculator will crash and everything (including your source code) will be erased. The chance of a new program you have just written crashing is much higher than most programs you can get from others, as those programs have usually been tested a lot with most or all problems already removed, while your new program is completely untested. You can use Chmasc to try to protect your memory, but this isn't 100% guaranteed protection, so it isn't really sufficient to protect source code that you have put a lot of effort into writing. For this reason, it's necessary to back up such important files to another calculator before testing a program you've just written (or, alternatively, you could do program editing on one calculator, and just send the program to a second calculator to run it there, which would take less time than transferring the much larger source code).

Can I store more than 96K of variables on my TI-86?

The TI-86 actually contains 128K of memory, even though only 96K of it is normally allowed for variables. You can add some of this memory to the variable space by running the 'Pterodactyl Memory Expander' program written by Kirk Meyer. This allows you to use up to about 111K of memory to store variables.

However, beware that this is not compatible with assembly programs. Most assembly programs use the space that it adds for temporary storage, so running assembly programs after installing this will almost certainly corrupt your variables.