-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
  TI-RAM.TXT        A Programmer's Guide to the TI-85 RAM       Version 0.5
                        Copyright (c) 1994 Dan Eble
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------

This document is unrefined, but you have it anyway.  Use it how you will.
If you have questions, contact me at Dan.Eble@CommLink.org.
Additions and revisions are welcome.
Feel free to distribute this document in unmodified form.

Table of Interesting Data

     0681: character lookup table for something
6    0C6B: 05, "xStat"
6    0C71: 05, "yStat"
128  1439: table for calculating transcendental functions
REAL 1F42: bad number
REAL 1F4C: same as 1F42
REAL 1F56: same as 1F42
REAL 1F60: 0
REAL 1F6A: 1
     41E5: page 7: pointers to error strings
     422B: page 7: error strings
     42DD: page 1: pointers to catalog entries for alphabet
112  4DC8: page 1: bitmap similar to menu box
250  4E38: page 1: 124 pointers to menus (indexed by secondary menu type byte)
1878 4F32: page 1: menu data structures (page 1)
                   1 byte for something
                   1 byte for number of pointers following
                   n pointers
     5688: page 1: menu items (See listing above)
     695C: page 1: mode screen strings (see above)
     6D7F: page 7: pointers to BASIC commands in token order
     6EFC: page 5: link error strings
     6F7D: page 7: pointers to BASIC commands in alphabetical order
     70E7: page 7: list of BASIC commands
     71B2: page 5: variable type strings
     723E: page 1: normal character set (01-E0)
     7268: page 5: zoom variable names (Func, Param, Pol, DifEq, ZRCL)
     76D4: page 7: pointers to variable names
     773E: page 7: variable name strings
     7775: page 5: "fnIntErr"
     7869: page 7: more pointers to variable names
     7936: page 1: character set for menus (00-D7)
     7D7A: page 4: system variable and constant names (cannot store to these)
     7F4F: page 7: filler FF's 
     7FFF: page 7: ROM version byte
                   57h: 3.0A
                   8Eh: 4.0
                   3Dh: 6.0
                   97h: 8.0
Byte 8000: translated scancode of key currently pressed, but
           00 if 01BEh (get key) has been called
Byte 8001: translated scancode of key currently pressed
Byte 8002: same as 8001, but FFh is more than one key is pressed
Byte 8003: countdown until key repeat (only runs for arrows and DEL)
Byte 8004: bit 2 set = key down now
Byte 8006: scancode of last key pressed
Byte 8007: contrast (00-1F)
Byte 8008: ?? timer for cursor blink?
Byte 800C: current row of text cursor (0-7)
Byte 800D: current column of text cursor (0-14h)
Byte 800E: current character at cursor position
Word 8074: ? pointer
Byte 8080: counter for "busy" indicator
Byte 8081: bitmap for "busy" indicator
10   8082: 1 Byte type of variable found afterward
	   1 Byte length of name of variable to locate
           8 Bytes of name plus padding (left over from last name)
Word 80C6: pointer to current home-screen input program (untokenized, length-data form)
Word 80C8: pointer to last-entry program (tokenized, length-data form)
           also pointer to the top of user memory
Word 80CA: ?           
Word 80CC: number of used user memory bytes 
           add this to (80C8) to find first byte of free memory
Word 80CE: ? pointer
Word 80D0: pointer to Ans
Word 80D2: ? pointer (500E) (page 1. char map?)
Word 80D4: ? pointer (5321) (page 1. menu pointers?)
Word 80D6: ? pointer
168  80DF: text screen memory (8*21 = 168 bytes)
Byte 8187: secondary cursor row
Byte 8188: secondary cursor column
Byte 8189: ??? more secondary data (copied from 8B2F)
Byte 818A: ??? more secondary data (copied from 8358)
Byte 818B: ??? more secondary data (copied from (834B) AND 16)
Byte 818C: data for international character symbol
           0 = nothing, 1 = accent, 2 = grave, 3 = circumflex, 4 = dieresis
Word 81BE: memory checksum from 8BF7 to FA6F
Word 81D1: pointer to current menu item
Word 81E1: ? page 1 pointer to a menu structure? 
Byte 81E3: \_ info about memory page?, what to do (run code, fetch submenu)
Byte 81E4: /  for 81E1?
Word 81E5: pointer to last sub-menu structure (page 1)
           one byte for something
           one byte for number of pointers to follow
           n words for n pointers
Byte 81E7: \_ info for 81E5?
Byte 81E8: / 
Word 81ED: ? pointer (81E1)
Word 81F0: pointer to custom pointers
           (There's a 09 before the 0F. What do it do?)
Word 81F4: ? pointer to last menu? (look at 5664)
Word 81FC: ? pointer (81F0) (pointer to pointer to custom pointers???)
Word 820B: ? pointer (81E1) (another one??)
40   8254: user menu string buffer -- 5 sets of data (one for each menu key)
           1 byte: 00h = not used, 80h = used (on menu)
           6 bytes: menu item
           1 byte: 00h
     827C: buffer for name of last error
Byte 8333: x coordinate of menu text cursor
Byte 8334: y coordinate of menu text cursor
Byte 8337: last error number
     8346: A table of bitmapped system data.  IY usually points here.
     844C: REALS. range vars.
1024 8641: graphics screen memory (64*128/8 = 1024 bytes)
REAL 8A41: 12345
REAL 8A4B: 67890
Word 8A5F: pointer to last-entry code (tokenized data form)
Word 8A61: pointer to code of last program executed 
Word 8A6B: secondary text memory (for page-flipping technique?)
Word 8B19: pointer to current home-screen input (untokenized data form)
Word 8B1B: pointer to start of user memory
Word 8B1D: subtract (8B1B) from this to get number of free bytes 
Word 8B1F: ? pointer
Word 8B25: pointer to start (end :) ) of first user variable VAT entry
Byte 8B3A: fixed-point decimal place (FFh for floating point)
32   8BB1: custom menu pointers ( 1 byte  = ??)
				( 1 byte  = 0F = # of items)
				(15 words = pointers)
				( 1 byte  = 00)
Word 8BE1: pointer to REAL+10 (what significance?)
Word 8BEB: pointer to one byte before end of VAT (backwards)
Loc  FA6F: end of VAT (it's built upside-down)
1024 FC00: real bitmapped video memory

Table of Bitmapped Data

(IY+00) or (8346)
 bit 3 set: keystroke available
 bit 2 set: Degree \_ angle display mode
       res: Radian /
(IY+02) or (8348)
 bit 7 set: DifEq \
 bit 6 set: Param  \_ graph
 bit 5 set: Pol    /  modes
 bit 4 set: Func  /
(IY+05) or (834B)
 bit 4 set: use "insert" cursor
 bit 3 set: print normal font in inverse color, or XOR menu font with screen
       res: print normal font in normal color, or overwrite menu font 
 bit 1 set: print 7 rows of menu font
       res: print 6 rows
(IY+08) or (834E)
 bit 0 set: dxNDer \_ method of differentiation
       res: dxDer1 /
(IY+0A) and (IY+0B), or (8350) and (8351)
 bits 7-6: 11= SphereV \
           01= CylV     >- vector display modes
           00= RectV   /
 bit 5 set: PolarC \_ coordinate display mode
       res: RectC  /
 bits 4-2: 100= Bin \
           010= Oct  \_ number
           001= Hex  /  bases
           000= Dec / 
 bits 1-0: 11= Eng    \
           01= Sci     >- number display modes
           00= Normal /
(IY+0D) or (8353)
 bit 1 set: affect text memory as well as screen
(IY+12) or (8358)
 bit 5 set: use "alpha" cursor
 bit 4 set: use "Alpha" cursor
 bit 3 set: use "2nd" cursor
 bit 1 set: there are valid data in the 8-byte buffer at (8078)
 bit 0 set: the "busy" indicator is turned on