Introduction: Programming TI-84 Plus (Silver Edition) Advanced

This is the advanced level of programming the TI-84 plus or silver edition. I recommend to do the beginners instructable (https://www.instructables.com/id/Programming-TI-84-Plus-Silver-Edition-for-beginn/) before starting this instructable. Be sure you are familiar with all commands used in the programs you made in the beginners instructable. Are you not a beginner, but are you just looking for some more information about how to make more advanced programs, then you are just at the right place. But even, if you are no beginner, I still ask you to read the beginners instructable before starting this one, just so you know what you need to be able to.
I know my programs are not the most compact and efficient there is, but they work good, look good and do exactly what you want them to do. When you see something you do not understand, please comment and I'll explain. If you have feedback on my programs or know a better or compacter way of making this program, please comment. 

Also this instructable has been divided into several sections:
1. advanced commands
     1. conditions - the if then else condition
     2. loops - an other way of making loops (not with Lbl)
     3. randomizing - a way to make the calculator put in a random number.
     4. the getKey command - an advanced command which will become really handy.
2. advanced programming
     5. two screens - an explanation on how to use the graph and home screen.
     6. miles and kilometers - an advanced version of the program you made in the beginners instructable.
     7. quadratic formula - an advanced version of the program you made in the beginners instructable.
     8. binary - a program which calculates the binary number of a decimal number.
3. programs can be fun
     9. bouncer - a fun program which is in fact a kind of screen saver.
     10. chatbot - a program which makes it possible to chat with your calculator.
     11. pranks - little programs to fool your friends with.
4. tips and tricks
     12. Renaming/deleting a program - how to change the name of a program or delete one.
     13. Subroutines - how to make a program run another program.
     14. Archive - the second memory.
     15. Backing up your calculator - a program on your computer, so you'll never lose your programs.


Note: this instructable is advanced. I will not build the program step by step like I did in the beginners instructable. I will show you the program, explain what it does and explain why you need to add particular commands. If you have a question, just commend.

Step 1: Conditionals

The If condition
You can already make a program which can count, but how do you stop it from counting when it reaches 100. With a condition of course. A counting program could look something like this:

:0→A
:Lbl A
:A+1→A
:Disp A
:Goto A

Now you add two lines which make it stop at 100, so you'll get this:

:0→A
:Lbl A
:A+1→A
:Disp A
:If A=100
:Stop
:Goto A

(The = can be found by pressing 2nd, math)
When using the If condition, it will check if the condition (A=100) is right. If it is, if will go on with the line underneath it and then go on with the lines underneath that one. If the condition is false, it will skip the next line and go on with the line second line down. So this program starts with 0. Then counts up to 1. It displays 1 and checks if A is 100. Because 1 is not the same as 100, it will skip the next line and go on to Goto A. So it'll go back to Lbl A and count on. But when A is equal to 100, it will go on with the next line, which says Stop, so the program will stop. 

The If Then Else condition
But maybe you would like to make the program do more then one thing if it reaches 100. For example make it display '100 has been reached.' Of course you could do that like this:

:0→A
:Lbl A
:A+1→A
:Disp A
:If A=100
:ClrHome
:If A=100
:Disp "100 HAS BEEN REACHED"
:If A=100
:Pause
:If A=100
:Stop
:Goto A

but this way your program will be way bigger than it could be. You could also do it like this:

:0→A
:Lbl A
:A+1→A
:Disp A
:If A=100
:Then
:ClrHome
:Disp "100 HAS BEEN REACHED
:Pause
:Stop
:Else
:Goto A

This program checks if A=100. If it is, it will just go on. But if it isn't, the program will skip everything until it reaches Else and then go on. Now you can delete the Stop command, because then, if A=100, it will first clear the home screen, then display the text, the pause until you press enter and then there's an Else command, so the commands for this piece end and the program will stop, so your program will look something like this:

:0→A
:Lbl A
:A+1→A
:Disp A
:If A=100
:Then
:ClrHome
:Disp "100 HAS BEEN REACHED
:Pause
:Else
:Goto A

One way of notation which is very common is an If Then Else condition like this:

:If A=...:Then
:.....
:Else

The : can by found by pressing ALPHA, 'point'. You can use the : in stead of adding an extra line everywhere in the program. You could write a whole program on one line, but that's not very handy, because with one accidental press on clear and your program has entirely been removed, except of the name, so I do not recommend that.

Multiple conditions

But maybe you want it to count on and make it ask to count on every time after 100 has been added. Then you could use the 'and' and 'or' commands, which can be found by pressing 2nd, math, right. Your program should look something like this:

:0→A
:Lbl A
:A+1→A
:Disp A
:If A=100 or A=200 or A=300 or A=400 or A=500
:Menu("GO ON?","YES",A,"NO",B
:Goto A
:Lbl B

This program will check if A=100 or if A=200 or if A=300 and so on. If one is right, it will display the menu and give you the choice to make it count on or not. If not, it'll stop, otherwise it will count on until the condition is true again.

Another possible multiple condition is one like this:

:If A=30 and B=2

In this cause the program will check if A is equal to 30. If so, it will check if B is equal to 2. If these are both true, it will go on with the line direct underneath it. If one of these conditions is not true, it will skip the next line, as it normally does when the condition is false.

You can also combine these two types of multiple conditions like this:

:If A=30 and B=2 or A=100 and B=2

I think you can figure out yourself what this will do.

New commands:
If
Then
Else

Step 2: Loops

You can create a loop with the Lbl command and Goto command like this:

:0->A
:Lbl A
:A+1->A
:If A<20
:Goto A

But this can be done easier by using the While command. The program will look like this:

:0->A
:While A<20
:A+1->A
:End

As you can see, this is a lot shorter. The End command is the end of the loop. This program will check if A is smaller than 20. As long as this condition is true, it will go on with the following lines, until it finds the End command. Then it will go back to the While command and check if the condition is still true. If the condition becomes false it will skip every following line, until it finds the End command and go on with the lines after End.

If you want to make an unconditional loop, you can use this:

:0->A
:While 1
:A+1->A
:End

1 stands here for a condition which is always true. This could become handy if there must be multiple ways to quit the loop, for example:

:0->A:0->B
:While 1
:A+1->A
:B+2->B
:If A=5
:Goto C
:If B=8
:Goto D
:End

One thing I recomment is to give the loop a lable:

:Lbl A
:While 1
:stuff
:End

If you now want to make the program go back to the loop after it left the loop, just use Goto A.

New commands:
While
End

Step 3: Randomizing

Sometimes you want the program to do something random, like telling you a random number, or placing text at a random location. To do so, you can use the randInt( command. You'll need to use it like this:

:randInt(a,b)

It will select a random number between a and b (could also be a or b). So if you'd want a program which places your name at a random location on the screen when you press enter, your program should look something like this:

:Clrhome
:Lbl A
:getKey->K
:If K=0
:Goto A
:If K=105
:Output(randInt(1,8),randInt(1,16),"NAME
:Goto A

Of course you can also give a letter a random value, like this:

:randInt(a,b)->R

New commands:
randInt(

Step 4: The GetKey Command

The getKey command is a more advanced command witch is used to make a program ask for a key. It could be any key except of the On key. There is one thing you need to know about this command. It is not a command like Prompt or Input, witch waits for you to enter a value. If you do not enter a value, it will go on with the program with value 0. To make it 'wait' for your answer you need to create a loop. Here is an example of such a loop:

:Lbl  1
:getKey
:If  Ans=0
:Goto  1

As you can see, you can recall the key which is put in with Ans. There is only one problem with this. I'll come back to that in a second. First you want to know how this command actually works. Well, every key has his own number. You can see which number belongs to which key on the picture. If you press a key, Ans will get its value. But now the problem with this notation.
If you would use the getKey command to change values of variables, this way could give some troubles. Lets say you have this program:

:0→A
:Lbl  1
:getKey
:If  Ans=0
:Goto  1
:If  Ans=25
:A+1→A
:If  Ans=34
:A-1→A
:Disp  A
:Goto  1

This program should show you the value of A. If you press up, one should be added to A and if you press down, one should be subtracted from A. Then it should show you the value of A. Unfortunately this program will not actually work like that. The problem is in the way Ans works. It takes the value of the last done calculation. If you press up, Ans will be 25, so one will be added. But what it does next is look if Ans is 34. Ans will be 34 when A is 34, because A+1 is the last calculation it has done, so in this program A can never be bigger then 33. To make sure the program does a good job, just give getKey an other value, K for example. Your program should now look something like this:

:0→A
:Lbl  1
:getKey→K
:If  K=0
:Goto  1
:If  K=25
:A+1→A
:If  K=34
:A-1→A
:Disp  A
:Goto  1

Now you think of course, how can I know all the values of every key? You don't need to. You could make a program which does that for you:) The program could look something like this:

:Lbl  1
:getKey
:Disp  Ans
:Goto  1

It is a really small but very handy program. The only thing it does is repetitively display 0 until you press a key. When you do, it will display the value which belongs to the key and then again repetitively display 0. You could make the program to not display the 0 every time, but if you do, the program will only be a lot bigger and it will not remind you to the fact that if you do not enter a key, it will just go on with value 0.

There is also another trick to remember the value of every key. First count from the upper row of keys down to the row of the key you want. Let's say you want to know the value of prgm. It's row is row 4. Now count from left to right. prgm will be the 3th key. prgm is row 4, key 3 so it's value is 43. 

New commands:
getKey

Step 5: Two Screens

In hardware, the calculator has just one screen, but in software, it has two. You could use both to make the program work with, but you can only use one at the same time. Those screens are the home-screen and the graph-screen.

Home-screen
The home-screen is the screen where you enter a formula and the calculator shows the answer. This screen is used by commands like Disp, Input, Output(, Prompt and ClrHome. This is also the screen where Done is shown when quitting a program. In fact, this is the main screen and is mosly used for simple programs or calculating programs, like the quadratic formula. This screen is not that accurate, because it's just 16 by 8 positions (16 wide and 8 high). In one position you can place one character, like a number, a letter, a blanc spot or a +, -, / or *. Some characters take several positions, like cos(. This one takes 4 positions in a row.

Graph-screen
The graph-screen is the screen where the calculator draws it's graphs. This screen is used by commands which can be found by pressing DRAW (2ND, PRGM). This screen is a lot more accurate, because it's 94 by 62 positions, or actually pixels. Every pixel can be turned on or off by the commands from the DRAW menu. I recommend familiarizing yourself with these commands. They are very hand, but not that hard to understand. I will be posting an other instructable on how to draw on the calculator in the near future, explaining most commands given in the DRAW menu.

Step 6: Miles and Kilometers

Maybe you did not like the miles and kilometers program from the beginners level. This could be because you had to close the program and restart it to enter an other value. What if I told you, you do not have to. In this step I will show you a way to make the program look nicer and be more handy.
Here is the program:

:0->A:0->M:0->N
:Lbl 3
:ClrHome
:If  A=0:Then
:Output(1,1,"MILES:
:Output(1,7,M
:Output(2,1,"KM      :
:Output(2,7,N
:Goto 1
:Else
:Output(2,1,"MILES:
:Output(2,7,M
:Output(1,1,"KM      :
:Output(1,7,N
:Lbl 1
:getKey->K
:If K=25 and A=0 or K=34 and A=0
:Then
:ClrHome
:Output(2,1,"MILES:
:Output(2,7,M
:Output(1,1,"KM      :
:Output(1,7,N
:1->A
:Goto 1
:Else
:If K=25 and A=1 or K=34 and A=1
:Then
:ClrHome
::Output(1,1,"MILES:
:Output(1,7,M
:Output(2,1,"KM      :
:Output(2,7,N
:0->A
:Goto 1
:Else
:If K=105
:Goto 2
: If K=22
:Then
:ClrHome
:Else
:Goto 1
:Lbl 2
:If A=0:Then
:Output(2,1,"KM      :
:Input "MILES:",M
:M*1.609344->N
:Output(2,1,"KM      :
:Output(2,7,N
:Goto 3
:Else
:Output(2,1,"MILES:
:Input "KM      :",N
:N/1.609344
:Output(2,1,"MILES:
:Output(2,7,M
:Goto 3

What does it do?
This program will first display this:

MILES:0
KM      :0

If you press up or down they will switch position. When you press Enter, it will ask for a value of the one that's at the top. Enter a value and press Enter. It will calculate the other value and display it. When you now press up or down, MILES and KM will switch position again, so are the values, until you press Enter again. Then the values will change to 0 and the program will ask for an other value of the one that's on top. When  you press MODE, the program will stop.
When you make a program which uses variables, I recommend to change all variables you're using to 0 at the beginning of the program. The 'and' and 'or' command can be found by pressing 2nd, math (test) and press left.

Step 7: Quadratic Formula

It could also be you didn't like the last quadratic formula program, because you could not see what you entered for A, B and C after getting the values for X, or maybe because if you'd only want to change the value of A, you'd need to restart the program and enter the same values for B and C all over again. With this program all those problems are solved. The program is a lot bigger then the last one, but it certainly looks nicer and works better.

:Lbl 5
:0->A:0->B:0->C:0->D:0->X:0->Y:0->Z
:Lbl 3
:ClrHome
:If Z=0:Then
:Output(1,1,"A=
:Output(1,3,A
:Output(2,1,"B=
:Output(2,3,B
:Output(3,1,"C=
:Output(3,3,C
:Output(4,1,"DISCR=
:Output(4,7,D
:Output(5,1,"X=
:Output(5,3,X
:Output(6,1,"OR
:Output(7,1,"X=
:Output(7,3,Y
:Goto 1
:Else
:If Z=1:Then
:Output(3,1,"A=
:Output(3,3,A
:Output(1,1,"B=
:Output(1,3,B
:Output(2,1,"C=
:Output(2,3,C
:Output(4,1,"DISCR=
:Output(4,7,D
:Output(5,1,"X=
:Output(5,3,X
:Output(6,1,"OR
:Output(7,1,"X=
:Output(7,3,Y
:Goto 1
:Else
:Output(2,1,"A=
:Output(2,3,A
:Output(3,1,"B=
:Output(3,3,B
:Output(1,1,"C=
:Output(1,3,C
:Output(4,1,"DISCR=
:Output(4,7,D
:Output(5,1,"X=
:Output(5,3,X
:Output(6,1,"OR
:Output(7,1,"X=
:Output(7,3,Y
:Lbl 1
:getKey->K
:If K=0:Goto 1                                                 mark 1
:Z+(K=25)-(K=34)->Z                                   mark 2
:If Z=3:0->Z                                                    mark 3
:If Z=-1:2->Z                                                  mark 4
:If K=105:Goto 2
:If K=22:Then                                               mark 5
:ClrHome
:Else
:Goto 3
:Lbl 2
:If Z=0:Goto A
:If Z=1:Goto B
:If Z=2:Goto C
:Lbl A
:ClrHome
:Output(2,1,"B=
:Output(2,3,B
:Output(3,1,"C=
:Output(3,3,C
:Output(4,1,"DISCR=
:Output(4,7,D
:Output(5,1,"X=
:Output(5,3,X
:Output(6,1,"OR
:Output(7,1,"X=
:Output(7,3,Y
:Input "A=",A
:If A=/0 and B=/0 and C=0:Then        mark 6
:B²-4AC->D
:If D<0:Goto E
:(-B-√(D))/(2A)->X
:(-B+√(D))/(2A)->Y
:Goto 3
:Else
:Goto 3                                                   mark 7
:Lbl B
:ClrHome
:Output(2,1,"C=
:Output(2,3,C
:Output(3,1,"A=
:Output(3,3,A
:Output(4,1,"DISCR=
:Output(4,7,D
:Output(5,1,"X=
:Output(5,3,X
:Output(6,1,"OR
:Output(7,1,"X=
:Output(7,3,Y
:Input "B=",B
:If A=/0 and B=/0 and C=0:Then
:B²-4AC->D
:If D<0:Goto E
:(-B-√(D))/(2A)->X
:(-B+√(D))/(2A)->Y
:Goto 3
:Else
:Goto 3
:Lbl C
:ClrHome
:Output(2,1,"A=
:Output(2,3,A
:Output(3,1,"B=
:Output(3,3,B
:Output(4,1,"DISCR=
:Output(4,7,D
:Output(5,1,"X=
:Output(5,3,X
:Output(6,1,"OR
:Output(7,1,"X=
:Output(7,3,Y
:Input "C=",C
:If A=/0 and B=/0 and C=0:Then
:B²-4AC->D
:If D<0:Goto E
:(-B-√(D))/(2A)->X
:(-B+√(D))/(2A)->Y
:Goto 3
:Else
:Goto 3
:Lbl E
:ClrHome
:Output(4,5,"Discr<0
:Pause
:Goto 5


Marks:
1. Placing this line directly beneath the getKey command leads to a faster reaction of the program, because it immediately asks for a new key, in stead of checking all the following stuff first, which would be pretty useless.
2. (K=25) and (K=34) are conditions. These conditions have value 1 if true and value 0 if not. This is a short way of writing condition.
3. Z may not be 3, so if it would count up and reach 3, it immediately goes to 0.
4. Z may not be negative, so if it would count down and reach a value below 0, it immediately goes to 2.
5. If key 22 is pressed (MODE/QUIT) the program will clear the screen (ClrHome) and then quit, because it reaches Else without first reaching a Goto command.
6. =/ should be the 'is not' sign, found by pressing 2ND, MATH and then the second option. I can, unfortunately, not type it.
7. I do not know the reason of why the Else and Goto 3 commands needs to be placed there, but if they are not placed there, the program will quit.

What does it do?
This program displays this screen:

A=0
B=0
C=0
DISCR=0
X=0
OR
X=0

If you'd press up or down, A, B and C will switch positions. Pressing up will cause the upper one to go to the bottom and the middle one to go to the top (firs B, then C, then A). Pressing down will cause the the bottom one to go to the top and the upper one to go to the middle (firs C, then A, then B). This way you can rotate these three letters. When you press enter it will ask you for a value of the upper one. Enter a value and press enter. Now you can rotate the three letters again. When all three letters got a value, which is not 0, the program will enter the values of the discriminant and both possibilities for X. Now you can still rotate and change the values of A, B and C to make it calculate the discriminant and both X's for an other value of A, B or C. When you press MODE/QUIT the program will quit. If you'd enter values for A, B and C which would cause the discriminant to be negative, the program would give an error, because it can not take the square root from a negative number. I put an extra feature in the program, which will cause the program not to give an error, but make it display the fact that the discriminant is smaller than 0. After this you'd need to press enter and all values will be reset to 0.

Step 8: Binary

Here is a program which can turn normal numbers into binary numbers. Check it out:

:Lbl A
:ClrHome
:Input "NUMBER",A
:If A<0:Goto A
:12->X:0->Z
:While 1
:X-1->X:A-2^X->B
:If B<0:End
:Z+10^X->Z
:If B=0:Goto Z
:B->A
:End
:Lbl Z
:Disp "BINARY NUMBER IS",Z
:Pause
:ClrHome
:Menu("  ANOTHER NUMBER?","YES",A,"NO",B
:Lbl B

What does it do?
This program is a pretty small program, but it works perfectly fine. All it does is ask you for a number, and, once it's entered, it will calculate it's binary twins. It's pretty simple. If you'd want to, you can find out how it works exactly with some good looking. There is just one thing I need to point out: you must not enter a number greater then 1024, because then the program will use the scientific notation for the binary number, which will cause the program to become inaccurate. 

Step 9: Bouncer

Here is a program I did not come up with myself, but found on the web. It's a kind of screen saver called bouncer. Take a look:

:ClrDraw:AxesOff
:randInt(0,62->A
:randInt(0,94->B
:1->C:1->D
:While 1
:A+C->A:B+D->B
:Pxl-Change(A,B
:If A=0:1->C
:If A=62:-1->C
:If B=0:1->D
:If B=94:-1->D
:End

What does it do?
This program uses the graph screen. It draws a diagonal line across the screen, beginning on a random location on the screen. When it comes to the edge of the screen, it will bounce off and go on in another direction. This way it will colour the screen and then erase itself again. It's pretty fun to impress your friends with.

Step 10: Chatbot

This is the main setup for a chatbot. Real simple actually.

:ClrHome
:Disp  "WELCOME TO THE","CHATBOT FOR TI  mark 1
:While 1
:Input "  ",Str1                                                               mark 2
:...                                                                                   mark 3
:End

Marks
1. This is just some welcome text. Enter here whatever you like. Or just delete this line. See it for yourself.
2. Str 1 is a variable. It is explained in my beginners instructable. Basically, it stores text.
3. Enter here any interaction you want the calculator to make. For example enter this:
    :If Str1="HELLO
    :Disp "HY

What does it do?
This program basically keeps waiting for you to enter text. If you do, it will check his 'catalog'. If you have 'learned' it the text, it will do exactly what you have learned it to do. Let's take a look at the example. If you'd enter HELLO, the calculator will respond with HY. You must not forget the quotation marks, because otherwise this wont work. You can learn it as many things as you want and talk with it when you're bored. If the calculator does not know the text you entered, it will just ask for an other text and ignore the things you said. Here are some other examples of things you could learn it:

:If Str1="STOP
:Stop

:If Str1="HELLO":Then
:randInt(0,3)->A
:If A=0:Disp "HY
:If A=1:Disp "GREETINGS
:If A=2:Disp "GOODDAY
:If A=3:Disp "HELLO
:End
:Else

:If Str1="WHAT TIME IS IT?
:getTime

:If Str1="OPEN ABC
:prgmABC

Step 11: Pranks

Of course you can also mess with your friend's calculators. Here are two funny programs. They are easy to make on a friends calculator. Here is the first:

:ClrHome
:Disp: "YOUR CALCULATOR","HAS BEEN BLOCKED","","ENTER CODE:
:Lbl A
:Input  "  ",X
:If X=23
:Goto B
:Goto A
:Lbl B
:Input "  ",X
:If X=11
:Goto C
:Goto A
:Lbl C
:Input "  ",X
:If X=1995
:Stop
:Goto A

What does it do?
This program will tell you your calculator has been blocked. Next it will ask you for a code. The code in this case is 23-11-1995. As you can see it's a date. You will first have to enter 23. If you do not, it will again ask you a number, until you do enter 23. After you've entered 23, it will ask you for an other number. If you enter 11, it will go on and ask you for yet another number (1995), but if you don't, it will go back to the beginning and ask you for 23 again. If you enter all three numbers in line correctly, the program will stop and your calculator will be unblocked. The fun thing of this program is that you can not see if it's asking you for the first, second or third number, so others won't even know you have to enter 3 different numbers (unless you tell them). You can enter any code. If you'd make this program on somebody else's calculator, try his/her birthday. It's their code and they will know the code, but they won't know that is the code. There is just one thing a little disappointing about this program. You could easily quit the program by pressing On. The program will pause and give the option to quit. Press quit and the calculator is unblocked without entering the code. By the way, this works with any program.

Here is the second program:

:ClrHome
:While 1
:Input "",A
:randInt(A-10,A+10)->A
:Disp A
:End
 
What does it do?
This program is even shorter and therefore easier to quickly make on a friends calculator without him/her noticing. If you run this program, your friend wont notice the difference with the calculator doing his normal work. Your friend will enter a question, for example take 23-4. The right answer is of course 19, but the calculator will display a random answer between 19-10=9 and 19+10=29. There is a possibility of 4,76% the answer the calculator gives will be the right answer, so it will probably be wrong. Be sure not to pull this trick just before a math test, because that could ruin your friends grade, which is unfair. 

Step 12: Renaming/deleting a Program

As you might know, you can not rename a program. Although you can make a new program and copy the content of  the program you'd want to rename to the new program. Let's say you my ABC program, but you named it ABCD. Now you want it to be called ABC. You'll have to make a new program called ABC. Then press RCL (2ND, STO). Press PRGM, left and sellect ABCD. Press enter and again enter. The content of ABCD will be coppied to ABC. You now have two programs which both do the same thing. You probably want to delete ABCD. To do so, press MEM (2ND, +), down, enter, enter. Now you're seeing a list of everything stored on your calculator. Sellect ABCD, the program you want to delete, and press delete. Now your program is deleted:)

Step 13: Subroutines

When writing a program, you can call upon other programs as subroutines. To do so, edit a program, press PRGM, left and chose the program you want to call upon. When you press enter you will see the next line:
:prgmNAME
When the program you're editting sees this line, it will run program NAME and once it's finnished with NAME, it will go on with the first program, there where it left of.

Step 14: Archive

As you might know, your calculator has two memories: RAM and Archive. It's RAM memory is it's main memory and working memory. When you store a program, picture, list or other variable it will be stored on the RAM memory. Unfortunately once you made a lot of programs, you will see the RAM memory is relativly small. You can archive any program or picture by going to MEM, Mem Mgmt/Del..., All... Select the program/picture you want to archive and press enter. The program will be stored on the Archive memory, in stead of the RAM memory. This will result in the calculator being faster. Once a program is stored on the Archive memory, you can not run it, nor edit it. Pictures can't be recalled, nor stored. To unarchive them, just go to the list, select the program you want to unarchive and press enter. You can also go to CATALOG (2ND, 0) and sellect the Archive or Unarchive command. These commands do not work with programs, but they do work with pictures. Select such a command, then press VARS, pictures and chose the picture you want to (un)archive. Press enter to select it and press enter again to (un)archive it. Once a program or picture is archived, a little star will appear in front of the name of the program or picture.

Step 15: Backing Up Your Calculator

Of course there are always those nasty guys who reset your calculator so you'll loose every single program you made. Well, no worries. There is a way to make a backup from your TI and put back all programs the same day that nasty guy deleted them.
A free program which is really easy to use is TI connect. You can download this program here. First select ad the right side of the screen 'TI connect for Mac' if your using a Mac, or 'TI connect for Windows' if your using a PC. Then choose your preferred language and press 'Continue as guest'. Then start the download and install the program.
Once it's installed, open the program. A small screen will pop up with 7 different options: TI DeviceExplorer, TI ScreenCapture, Backup, Restore, TI DataEditor, TI DeviceInfo and Explore My TI Data. Off all these options, there are only two you can use without having to install some more software. These two are Backup and Restore. First connect your TI to your computer with the usb cable you got with the calculator. Then select Backup (or press b) to make a backup of your TI. TI connect will immediately begin to search for a TI connected to the computer. Select the right calculator and select where you want to store the backup, how to name it and what you want to backup: the apps, the archive or the ram, or any combination. Press OK and the computer will start backing up your TI.
To restore the backup to the TI connect the TI to your computer and choose Restore (or press r). Again it will immediately begin to search for a connected TI. Select the TI and select if you want to restore the apps, the archive, the ram or any combination of these. Then select  which backup you want to restore on your calculator and press OK. Wait a couple of seconds (depending on how much programs and apps and stuff it needs to copy) and your done.