 
    BASECONV v1.0 is Freeware
    Commercial Distribution Restricted
    Copyright (C) 1994 by Mikael Bonnier, Lund, Sweden.
 
 
1. System and Memory Requirements
This program is for the TI-82. It consists of one main program,
that uses 137 bytes. It requires additionaly a minimum of 94 bytes,
and a maximum of 1858 bytes for data to run, depending on the number 
of digits in the input and output number.
 
BASECONV uses or alters these variables:
Real:   A,I,J,O
List:   L1,L2
 
 
2. Installation
If you have TI-GRAPH LINK UUDecode this file, and send the resulting
BASECONV.82P program to the calculator. If you don't have a
link you will have to enter the ASCII82P listing below.
 
 
3. User Instructions
First you have to setup the bases (radices) of the input and 
output number, you do this by storing to the variables I and O.
Say you want convert from base (radix) 10 (decimal) to base 16 
(hexadecimal, or sedecimal as some informationtheorists would like 
us to say). Then you: 10->I:16->O [ENTER]. The bases must be 
integers greater than or equal to two (2, binary is the smallest
base).
 
Now you enter your number as a list, with one "metadigit" per list 
element. The reason i call them metadigits is because they can 
consist of several decimal digits. The metadigits should be in the 
interval 0 to InBase-1 (i.e. I-1).
 
To convert 753664dec to hex enter: {7,5,3,6,6,4} [ENTER], this 
stores the list in Ans, which is exactly what BASECONV wants. Now 
enter: prgmBASECONV [ENTER], and the the result is soon displayed. 
The result is also stored in Ans (and L2), in case you should want to use
it further.
 
In the case Ans is displayed as {11 8 0 0 0}, i.e. B8000hex if you
substitute the hexdigits 'A'=10, 'B'=11, 'C'=12, 'D'=13, 'E'=14, 
'F'=15, for the "metadigits" in decimal form. In this way bases up 
to 36 (='Z') is usually written. Another case when metadigits 
themselves has digits is the sexagesimal system (base=60), which
the TI-82 has built in functions to handle, see ANGLE menu.
 
Another example: Convert B8000hex to binary.
   16->I:2->O:{11,8,0,0,0}:prgmBASECONV [ENTER]
   Ans= {1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
Use the arrow keys to scroll the result sideways.
You can also view the result using the list editor:
   [STAT] 1 (Edit...)
As you may notice the number in the original base is stored in L1.
 
The reason why I choose to set I and O outside the program is 
because often one needs to convert many numbers in one direction,
and this saves typing.
 
Tip:
Entering decimal numbers can be simplified; you don't need commas 
between digits:
     10->I:8->O:{753664}:prgmBASECONV
     Ans= {2 7 0 0 0 0 0}
That is 753664decimal is 2700000octal.
There is also a smart manual way to convert between bases 2, 8, and 
16, or between 10, 100, and 1000, but that I leave to somebody else
to teach.
 
Warning:
This program is not secure. You can enter erroneous indata 
without the program complaining, and you may receive reasonable 
but incorrect outdata. But it is not difficult to add code to make
it safe.
 
 
4. References      
Check out any reasonable text on algebra or switching theory,
e.g. (sorry only in Swedish):
 
Mats Cedervall and Goran Lindh.
"Digitalteknik".
Department of Information Theory, Lund University, Lund, 1993.
 
 
Suggestions, improvements, bug, and bad-English-in-doc reports
are always welcome to:
                 Mikael Bonnier
                 Osten Undens gata 88
                 S-227 62  LUND
                 SWEDEN
                             
Or use my internet address:
                 mikaelb@df.lth.se
 
// Mikael Bonnier
/////////////////////////////////////////////////////////////////////
