#########################################################################
#    ____        __                            _       __		#
#   / __ \____  / /_  ______  ____  ____ ___  (_)___ _/ /		#
#  / /_/ / __ \/ / / / / __ \/ __ \/ __ `__ \/ / __ `/ / 		#
# / ____/ /_/ / / /_/ / / / / /_/ / / / / / / / /_/ / /  		#
#/_/    \____/_/\__, /_/ /_/\____/_/ /_/ /_/_/\__,_/_/   		#
#              /____/                                    		#
#   _____       __               					#
#  / ___/____  / /   _____  _____					#
#  \__ \/ __ \/ / | / / _ \/ ___/					#
# ___/ / /_/ / /| |/ /  __/ /    					#
#/____/\____/_/ |___/\___/_/  v0.1b					#
#                                					#
# _                  _ _             _    _           _        _ _ 	#
#| |                | (_)           | |  | |         | |      | | |	#
#| |__  _   _       | |_ _ __ ___   | |__| | __ _ ___| | _____| | |	#
#| '_ \| | | |  _   | | | '_ ` _ \  |  __  |/ _` / __| |/ / _ \ | |	#
#| |_) | |_| | | |__| | | | | | | | | |  | | (_| \__ \   <  __/ | |	#
#|_.__/ \__, |  \____/|_|_| |_| |_| |_|  |_|\__,_|___/_|\_\___|_|_|	#
#        __/ |                                                     	#
#       |___/                                                      	#
#########################################################################
Table Of Contents
1. What is this?
2. How do I use it?
3. Notes to aspiring programmers
4. FAQ
5. History
6. Credits

####################
# 1. What is this? #
####################
	This is the fully functional Polynomial Solver, a TI-83 program
that will automatically solve a polynomial equation (eg: x^3+2x^2-2x-4).
This program can handle any number of terms in your equation. It is the
(believed) first program of this type to ever be written in BASMIC. The
ASM programs are safe, as long as they are used properly.

#######################
# 2. How do I use it? #
#######################
	First off, you're going to need a TI-83 (_**NOT A TI-83 PLUS**_), 
a Graph-Link Cable (or something comprable), and a lot of free space. The
amount of space you will need for this program is very arbitrary. It 
requires 3703 bytes of space for the programs, but the list files and the
string files that are used within the program will require more space, so
I recommend a good 1000 bytes open when you use the program.
+-------------------------------------+
| Sending the file to your calculator |
+-------------------------------------+
Be sure to send all seven programs (POLYSOLV, ZCOEF2EQ, ZFACTOR, ZNUMSTR,
ZPOVERQ, ZSYNDIV, and ZUSRHELP) when you transfer this program, as all 7 
programs are essential to the whole Polynomial Solver.
+---------------------+
| Running the program |
+---------------------+
1. Run program POLYSOLV. The ZXXXXXX programs are subroutines for POLYSOLV.
(Instructions for using the subroutines is in Section 3.)

2. When you get to the blank, "What is the degree of your equation?", type
in the degree of your equation (for the persons that sleep in math class,
the degree of an equation is the highest exponent in the equation (eg: 
in the equation x^3+x^2+x+1, 3 is the degree)).

3. The next blank reads: "For the given equation, what is the coefficient of
the... X^N term?" (N signifying whatever number appears). Look at the 
equation you have to solve. Enter the coefficient for the term with that
exponent. After you enter the first coefficient, the program will ask you
for the next coefficient. Also, the X^0 term is the term that has no X 
inside of it. (eg: for the equation x^3+x^2+x+1, you would enter 1,1,1, and
1.)

4. Hopefully from here, it should be downhill. After you enter the X^0 term,
the program will begin to decipher all possible rational roots for your
equation. The process has four steps, factors of P, factors of q,
generating p/q, and sorting list. Each stage has a percentage done meter
so you don't get worried about your calculator freezing up. The speed of
this process is largely determined upon your equation. The process could
take anywhere from a few seconds to a minute, depending. You can always
bail out of the program by pressing [ON] =).

5. After the program has generated all possible rational roots, it will run
them through the equation. There's no possible way to determine how long
this will take, so you'll just have to be patient. Once it finds a factor,
it will display it on the screen. Don't worry if it goes too fast, the
program will list them at the bottom.

6. If by chance, the equation you have entered has no rational roots, it
will prompt you to find a root on a graph of the function. Move the cursor
to the spot where Y is closest to zero and press enter. (Kind of like the
zero function under [2ND][CALC], except my program doesn't need bounds.)
It will calculate the root from your guess and attempt to finish the 
factoring job. This has not proven entirely successful in equations over
degree 3, but, it's worth a try.

7. After the program has finished finding roots, it will list them in
X-N forms. All decimal answers are rounded to the nearest thousandth. (If
you want to see the exact answers, look at L5.)

8. There! You've sucessfully used POLYSOLV.

####################################
# 3. Notes to aspiring programmers #
####################################
	This program is quite an accomplishment for me. It's the first
program I've created for public release. This section is mainly for any
of you programmers who want to use my subroutines in their own programs.

1. ZCOEF2EQ (requires: ZNUMSTR)
This program will turn a list of coefficients into an equation, stored to
Str0 (and Ans). Pass a list of numbers to ZCOEF2EQ using the Ans variable
(in other words, display the list on the home screen, then run ZCOEF2EQ).
This program can handle any number of coefficients. The string created by
this program can be converted to equation form using string|>equ.This 
program takes a little time to work. You must have ZNUMSTR for this 
program to work.

2. ZFACTOR
This program will factor any integer. Pass the number to this program 
using Ans, run the program, and it will return a list of factors. You can 
also set the X variable from 1 to 8 to control where you wish the %
completed dialog to appear (it will assume 1 if you enter nothing).

3. ZNUMSTR
This program is written in assembly, so be careful how you use it. Pass it
a number, and it will convert that number to a string (stored back to Ans).
This program is invaluable to the Polynomial Solver, and it is also the
reason why I can't port this program to the TI-83 Plus. If anyone wants to,
e-mail me at jimhaskell@yahoo.com and I'll give you the source code (easier
to decipher than what the 83 disassembler gives you). When you use this
program, be sure to call it using Send(9prgmZNUMSTR), or you'll get a syntax
error.

4. ZPOVERQ
This program is not useful in any other enviroment but this, so I won't
describe it. 

5. ZSYNDIV
This is my 74 byte synthetic division program! Pass it a list of coefficients
in Ans, and a divisor in variable D, and it will perform synthetic divsion 
very quickly. It will store the resulting equation back to Ans, but the last
term is the remainder.

6. ZUSRHELP
This program is very limited in its usefulness outside of this enviroment,
so I won't go into it.

##########
# 4. FAQ #
##########
Q: This program kicks ass, but I have a TI-83 Plus! Please port it!
A: No can do, son. I'm not smart enough to port my assembly routines into the
TI-83 Plus.

Q: The program didn't find any factors, even after I gave it help.
A: Some polynomial equations can't be factored. Also, this program finds
integer factors most easily. It can find the factors of any third degree 
equation, however. Just remember, like me, you, and all other humans, it ain't
perfect. I tried to make this program as intelligent as possible, but you
can't win em all... I guess I could write a seperate routine for each degree,
but then the program would be huge =).

Q: Why won't this program factor trinomials?
A: Bah, trinomials are easy! Just use the quadratic formula: 
((-b sqrt(b-4ac))/2a). But, I guess you could trick the program into factoring
the trinomial by entering it as a third degree polynomial with the x^0 term = 0.
Just ignore the 0 factor =)

Q: I used your program on a test and I failed! How could you?
A: Realize that I'm not perfect (see second question), and there's a great
possiblity that I messed up. Besides, this is a BETA version... which means
bug-ridden and unreliable. If you can isolate the bug and send it back to me,
I'll fix it and re-release the program. Don't worry, any help will be
acknowledged in the Credits as well as the history.

##############
# 5. History #
##############
v0.1b - 0226000 - 3703 bytes, ~1000 free to run
* First public release
* Hope and prayer =)

##############
# 6. Credits #
##############
Texas Instruments - for making great calculators that entertain me during boring
math classes
J. Matthews - For writing ASM83 Guru and the source code for the ZNUMSTR
You - For using my program. 
Me - for writing the program! =)

#############
# 7. Footer #
#############
I doubt that this program should cause your calculator any harm (cause it's
written in mostly basic). However, do not abuse the assembly program, cause
there's no telling what it will do if you pass it something else besides a 
number. I can't be held responsible for anything that happens to your
calculator. Have fun!
     | (_)           | |  | |         | |      | | |
     | |_ _ __ ___   | |__| | __ _ ___| | _____| | |
 _   | | | '_ ` _ \  |  __  |/ _` / __| |/ / _ \ | |
| |__| | | | | | | | | |  | | (_| \__ \   <  __/ | |
 \____/|_|_| |_| |_| |_|  |_|\__,_|___/_|\_\___|_|_|
jimhaskell@yahoo.com	http://jhaskell.virtualave.net/
"Whenever I watch TV and see those poor starving kids all over the world, I
can't help but cry. I mean I'd love to be skinny like that but not with all
the flies and death and stuff." - Mariah Carey, pop singer