----------------------------------------------------------------------------- ----------------------------------------------------------------------------- 82-VAR.TXT A Programmer's Guide to the TI-82 Version 0.4 Copyright (c) 1999 Mattias Lindqvist & Dines Justesen ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- This document tries to explaine how the TI82 system is build up. Suggestions, additions and corrections are very welcome, mail me at the address below. You can always find the latest version of this document at my homepage. Dines Justesen email: c958362@student.dtu.dk www : http://www.student.dtu.dk/~c958362 Memory layout ------------- The memory layout of the TI82 is something like what is shown below. +--------------------------+ 0000 | ROM page 0 | |--------------------------| 4000 | ROM page | |--------------------------| 8000 | System memory | |--------------------------| 8D24 | User memory | | | | | V | | | | ^ | | | | | Temp VAT ? | (vars starting with '$') | ^ | | | | | Program VAT | | ^ | | | | | VAT | |--------------------------| FE6E | Stack | |__________________________| FFFF Types of variables ------------------ The list below contains the numbers of the types of data used on the TI82. Type: Number: ------------------------- Real 00 List 01 Matrix 02 Y-Var 03 Program 05 Protected program 06 Pic 07 GDB 08 ? 09 (prgm like name) ? 0A (uses token name) WINDW 0B - ZSTO 0C | TABLE 0D | Link only LCD 0E | Backup 0F - Format of variables: -------------------- Real: The real variables are 9 bytes long on the TI82. The bytes are used as shown below. +------+-----+----+----+----+----+----+----+----+ | Sign | Exp | D1 | D2 | D3 | D4 | D5 | D6 | D7 | +------+-----+----+----+----+----+----+----+----+ The MSB of the sign bytes holds the sign, 0 for positive and 1 for negative. The lower 4 bits are often used to store the type of the variable. Exp holds the exponent of the number, 80 for 00 more for positive and less for negative. D1 to D7 are the digits of the numbers in packed BCD. Using the notation -123 would be written as: 80 82 12 30 00 00 00 00 00 List: The first two bytes contains the number of reals in the list. After that the data is stored as one real after another. Matrix: The first byte holds the number of elements in each row, the second the number of elements in a coloum. The first real is (1,1) the next (1,2) and the last is the value in the lower right corner. The TI82 tokens --------------- Some variables on the varialbes on the TI82 has a token which tells the system which var it is. A list of some of the common tokens is shown below. Matrix MA = 5C 00 MB = 5C 01 MC = 5C 02 MD = 5C 03 ME = 5C 04 Lists L1 = 5D 00 L2 = 5D 01 L3 = 5D 02 L4 = 5D 03 L5 = 5D 04 Y-Var Y1 = 5E 10 All func. have bit 4 set Y2 = 5E 11 Y3 = 5E 12 Y4 = 5E 13 Y5 = 5E 14 Y6 = 5E 15 Y7 = 5E 16 Y8 = 5E 17 Y9 = 5E 18 Y0 = 5E 19 Xt1 = 5E 20 All param. have bit 5 set Yt1 = 5E 21 Xt2 = 5E 22 Yt2 = 5E 23 Xt3 = 5E 24 Yt3 = 5E 25 Xt4 = 5E 26 Yt4 = 5E 27 Xt5 = 5E 28 Yt5 = 5E 29 Xt6 = 5E 2A Yt6 = 5E 2B r1 = 5E 40 All polar. have bit 6 set r2 = 5E 41 r3 = 5E 42 r4 = 5E 43 r5 = 5E 44 r6 = 5E 45 Un = 5E 80 All seq. have bit 7 set Vn = 5E 81 Prog????? 5F single byte ? Pic Pic1 = 60 00 Pic2 = 60 01 Pic3 = 60 02 Pic4 = 60 03 Pic5 = 60 04 Pic6 = 60 05 GDB GDB1 = 61 00 GDB2 = 61 01 GDB3 = 61 02 GDB4 = 61 03 GDB5 = 61 04 GDB6 = 61 05 Besides the tokens above some of the other tokens are used by the system. All the tokens used on the TI82 are the same as the one used on the TI83 (except for a few which is listed below), so for a complete list of tokens look at TI's documentation on the TI83. Tokens used on the TI83 which is not used on the TI82 : 26,2C,AA,BB,EB,GFMT+16,GFMT+17,GFMT+18 Tokens which does not mean the same thing on the TI82: 22 : solve( GFMT+5 : time The tokens for all of the stat/range system vars has been found at their location in the RAM has been documented. The tokens used are the same as on the TI83, but unlike the list there all the values are known. In future versions of this document the list of system vars mioght be included. The VAT ------- On the TI82 the VAT has been split into three different parts, which uses different formats for storing data. The top most part holds all types of variables except programs. The next part holds information on programs. The last part holds ?ANS?. As on the TI85 all data in the VAT is stored backwards. The format of the top most part is shown below. +------+------+------+--------+--------+------+ | Type | Adr1 | Adr2 | Token1 | Token2 | Zero | +------+------+------+--------+--------+------+ The type byte holds the type of veriable discreibed. Adr1 and Adr2 holds the adress of the first byte of data (including the length). Token1 and Token2 holds the variables token. The last byte is almost always zero, but not always. The function of the last byte is not known. The next part of the Vat uses the format shown below. +------+------+------+---------+---------+ | Type | Adr1 | Adr2 | NLength | Name . .| +------+------+------+---------+---------+ As before Type hols the type of variable and Adr1 and Adr2 holds the address. Nlength holds the length of the name in bytes. After that comes the name. The 4 MSB of the types (for both kinds of VAT) is sometimes used to store data, which means that they are not allways zero. Therefore these bits should be masked out befor the type is used. When these functions are used for Y-Vars they are are used to tell what kind of graphs they affect (see the tokens section for details). This makes it easier to use the "smart" graph function. The TI82 keys ------------- Depending on how the key presses are read the TI82 uses different numbers for the keys. One possible way of reading keypresses is reading the port directly, see 82-PORTS.TXT for more information. Besides this the ROM contains two function which can be used. The key layout for these functions is shown in the tables below. The table below lists the scan code returned by the TI82 function placed at 1D4. +-------------+-------------+-------------+ | 00 NO KEY | 16 TAN | 28 x,T,theta| | 01 DOWN | 17 VARS | 29 ON * | | 02 LEFT | 19 . | 2A STO> | | 03 RIGTH | 1A 2 | 2B LN | | 04 UP | 1B 5 | 2C LOG | | 09 ENTER | 1C 8 | 2D X^2 | | 0A + | 1D ( | 2E X^-1 | | 0B - | 1E COS | 2F MATH | | 0C * | 1F PRGM | 30 ALPHA | | 0D / | 20 STAT | 31 GRAPH | | 0E ^ | 21 0 | 32 TRACE | | 0F CLEAR | 22 1 | 33 ZOOM | | 11 (-) | 23 4 | 34 WINDOW | | 12 3 | 24 7 | 35 Y= | | 13 6 | 25 , | 36 2nd | | 14 9 | 26 SIN | 37 MODE | | 15 ) | 27 MATRIX | 38 DEL | +-------------+-------------+-------------+ * The ON-handler gets to this first ! Another way of reading keypresses is the function at 393E. This function will wait for a keypress, and take care of 2nd/ALPHA,constrast change and APD. The function does not returns until a key has been pressed, while it is waiting for a key it goes into low power mode. If the user presses 2nd-ON the calc is turned off, and when it is turned on it goes to the homescreen, recalling whatever was located in the textmem. Normal function --------------- +-------------+-------------+-------------+-------------+ | RIGTH 1 | STAT 55 | ) 135 | 7 150 | | LEFT 2 | GRAPH 69 | STO> 139 | 8 151 | | UP 3 | MODE 70 | , 140 | 9 152 | | DOWN 4 | WINDOW 73 | (-) 141 | x,T,the 181 | | ENTER 5 | Y= 74 | . 142 | X^-1 183 | | CLEAR 6 | TRACE 93 | 0 143 | SIN 184 | | DEL 7 | + 129 | 1 144 | COS 186 | | PRGM 45 | - 130 | 2 145 | TAN 188 | | ZOOM 46 | * 131 | 3 146 | X^2 190 | | MATH 49 | / 132 | 4 147 | LN 192 | | VARS 52 | ^ 133 | 5 148 | LOG 194 | | MATRIX 54 | ( 134 | 6 149 | | +-------------+-------------+-------------+-------------+ 2nd function ------------ +-------------+-------------+-------------+-------------+ | RIGTH 12 | STAT 58 | ) 238 | 7 253 | | LEFT 11 | GRAPH 75 | STO> 9 | 8 252 | | UP | MODE 64 | , 153 | 9 251 | | DOWN | WINDOW 76 | (-) 198 | x,T,the 65 | | ENTER 10 | Y= 48 | . 199 | X^-1 244 | | CLEAR 6 | TRACE 59 | 0 143 | SIN 185 | | DEL 8 | + 53 | 1 245 | COS 187 | | PRGM 47 | - 137 | 2 246 | TAN 189 | | ZOOM 46 | * 136 | 3 247 | X^2 191 | | MATH 50 | / 132 | 4 248 | LN 193 | | VARS 56 | ^ 182 | 5 249 | LOG 195 | | MATRIX 57 | ( 237 | 6 250 | | +-------------+-------------+-------------+-------------+ Alpha function -------------- +-------------+-------------+-------------+-------------+ | RIGTH 1 | STAT 55 | ) 166 | 7 169 | | LEFT 2 | GRAPH 69 | STO> 178 | 8 170 | | UP 3 | MODE 70 | , 164 | 9 171 | | DOWN 4 | WINDOW 73 | (-) 203 | x,T,the 181 | | ENTER 5 | Y= 74 | . 142 | X^-1 158 | | CLEAR 6 | TRACE 93 | 0 154 | SIN 159 | | DEL 7 | + 204 | 1 179 | COS 160 | | PRGM 157 | - 177 | 2 180 | TAN 161 | | ZOOM 46 | * 172 | 3 205 | X^2 163 | | MATH 155 | / 167 | 4 174 | LN 173 | | VARS 52 | ^ 162 | 5 175 | LOG 168 | | MATRIX 156 | ( 165 | 6 176 | | +-------------+-------------+-------------+-------------+ The following paragraph contains a list of keys and the numbers returned by the GetKey function. The number listed is the number returned by the function. the key field indicates which key was pressed and function indicates which function it has (based on 2nd and alpha flags). # Key Function -------------------- 1 RIGTH RIGTH 2 LEFT LEFT 3 UP UP 4 DOWN DOWN 5 ENTER ENTER 6 CLEAR CLEAR 7 DEL DEL 8 DEL INS 9 STO> RCL 10 ENTER ENTRY 11 LEFT BOL 12 RIGTH EOL 45 PRGM PRGM 46 ZOOM ZOOM 47 PRGM DRAW 48 Y= STAT PLOT 49 MATH MATH 50 MATH TEST 52 VARS VARS 53 + MEM 54 MATRIX MATRIX 55 STAT STAT 56 VARS Y-VARS 57 MATRIX ANGLE 58 STAT LIST 59 TRACE CALC 64 MODE QUIT 65 x,T,theta LINK 69 GRAPH GRAPH 70 MODE MODE 73 WINDOW WINDOW 74 Y= Y= 75 GRAPH TABLE 76 WINDOW TblSet 93 TRACE TRACE 129 + + 130 - - 131 * * 132 / / 133 ^ ^ 134 ( ( 135 ) ) 136 * [ 137 - ] 139 STO> STO> 140 , , 141 (-) (-) 142 . . 143 0 0 144 1 1 145 2 2 146 3 3 147 4 4 148 5 5 149 6 6 150 7 7 151 8 8 152 9 9 153 , EE 154 0 ; 155 MATH A 156 MATRIX B 157 PRGM C 158 X^-1 D 159 SIN E 160 COS F 161 TAN G 162 ^ H 163 X^2 I 164 , J 165 ( K 166 ) L 167 / M 168 LOG N 169 7 O 170 8 P 171 9 Q 172 * R 173 LN S 174 4 T 175 5 U 176 6 V 177 - W 178 STO> X 179 1 Y 180 2 Z 181 x,T,theta x,T,theta 182 ^ Pi 183 X^-1 X^-1 184 SIN SIN 185 SIN SIN^-1 186 COS COS 187 COS COS^-1 188 TAN TAN 189 TAN TAN^-1 190 X^2 X^2 191 X^2 SQRT 192 LN LN 193 LN e^X 194 LOG LOG 195 LOG 10^X 198 (-) ANS 199 . : 203 (-) ? 204 + " 205 3 THETA 237 ( { 238 ) } 244 X^-1 ABS 245 1 L1 246 2 L2 247 3 L3 248 4 L4 249 5 L5 250 6 L6 251 9 n 252 8 Vn-1 253 7 Un-1