----------------------------------------------------------------------------- ----------------------------------------------------------------------------- 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