83Plus:OS:Calculator Variables

From WikiTI
Jump to: navigation, search

This page is devoted to describing the TI-83+ series' variables and their structure.

Real & Complex

Real and Complex variables are argueably the most easy to understand variables on the calculator. With a simple structure and only a few major differences between the two. It is also good practice to master the format of the real and complex variables before moving onto the more complex matrix and list variables.

The real variable is the easiest to understand. In Ram it is laid out as such:

(LOW MEMORY) | Flag | Size (LSB) | Size (MSB) | VAT entry (9 bytes) | Floating Point number (9 bytes) | (HIGH MEMORY)

The entry "Floating Point Number" here obviously denotes the number being stored into the real variable. This is also how it is stored. The calculator naturally uses floating point numbers for most, if not all, user interactions.

TI uses a fourteen-digit (7 byte) number space in their floating point number(the mantissa), with 2 bytes placed before the actual number for modification. The second byte is the exponent byte, and it is signed, allowing you to place the mantissa to 10^(-127) or 10^(128).

The first byte after the VAT entry is very import to us and it is used to differentiate between the normal real variable and a complex one. This byte has several parts which are laid out as such:

bit | Use
0-4 | Complex indicator (0 for real number, C for part of a complex number)
5-6 | No/Future use
 7  | Mantissa sign bit

The Mantissa sign bit is used to give the floating point number of either the real or complex variable, if reset the value of the mantissa is positive, if set the value of the mantissa is negative.

The Complex indicator (unoffical name) is allocated to the first four bits of any nine byte floating point number the Calculator uses, and it is how one tells the difference between a real variable, and a complex one. If the last four bits are reset ($0) then the following floating point number is a real number, and is on floating point unit long. However, if the value of the last four bits is $C (%1100) then the following floating point number is a complex number, and it requires two floating point units (numbers). The two numbers need for a complex number represent the real and imaginary parts for them. It may be important to note that both the complex real part, and the complex imaginary parts are marked with their complex indicator being $C.

This represents a real number

80 | 80 | 23 45 00 00 00 00 00 = -2.345

This represents a complex number

8C | 82 | 23 45 00 00 00 00 00
0C | 7F | 25 00 00 00 00 00 00 = -234.5 + 0.25i

Real & Complex List

The Real and Complex List format is very similar to the simple Real and Complex variable format. They are, in essence, a string of real and/or complex variables.

They are formatted simply:

(LOW MEMORY) | Flag | Size (LSB) | Size (MSB) | VAT entry (9 bytes) | list length (LSB) | list length (MSB) | Data | (HIGH MEMORY)

After the VAT copy, there are two bytes that define the list's length. People familiar with programming with Lists will note, that while two bytes allows for 65536 elements in a list, and barring not having enough memory, it is not currently know why there is a list limit at 999 elements. It is important to note that in complex lists, the imaginary part of a number does not take up space in the list number (ie, Real part + Complex part = only one element.)

This represents a real list with two elements:

size  | element number 1            |  element number 2
02 00   80 82 23 45 00 00 00 00 00    80 81 23 45 00 00 00 00 00 = {-234.5,-23.45}

This represents a complex list with two elements:

02 00   8C 82 23 45 00 00 00 00 00    0C 7F 25 00 00 00 00 00 00 
        8C 81 23 45 00 00 00 00 00    0C 7E 25 00 00 00 00 00 00 = {-234.5 + 0.25i, -23.45 + 0.025}

Matrix

The matrix format is very similar to the list structure, and somewhat more simple due to the fact that there is no complex matrix format.