----------------------------------------------------------------------------- ----------------------------------------------------------------------------- TI-RAM.TXT A Programmer's Guide to the TI-85 RAM Version 0.8 Copyright (c) 1995 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 8 8078: 8x8 bitmap of top right corner of screen. 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 program (untokenized length-data form) Word 80C8: pointer to the top of user memory - 16 Word 80CA: ? Word 80CC: number of used user memory bytes ? Word 80CE: ? Word 80D0: pointer to Ans Word 80D2: pointer to last variable accessed Word 80D4: ? pointer ? Word 80D6: pointer to final VAT entry 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 [screen_scroll_start]) 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: ? 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 (maybe more general pointer to current menu structure) (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. 838E: REALS. range vars. 1024 8641: graphics screen memory (64*128/8 = 1024 bytes) REAL 8A41: used for making random numbers REAL 8A4B: used for making random numbers Word 8A5F: pointer to last entry code (tokenized data form) Word 8A61: ? pointer to code of last program executed (maybe not) Word 8A6B: secondary text memory (for page-flipping technique?) Word 8B19: pointer to current home-screen program (untokenized data form) Word 8B1B: pointer to last entry program (tokenized length-data form) Word 8B1D: subtract (8B1B) from this to get number of free bytes Word 8B1F: ? same as 8B1D ? Word 8B25: pointer to last byte of free memory (end of VAT - 1) Word 8B27: pointer to first byte of free memory Word 8B29: a number (see 8BF7) Byte 8B2F: first row of screen scrolling window (0-7) Byte 8B30: last row of screen scrolling window (1-8) Byte 8B3A: fixed-point decimal place (FFh for floating point) 32 8BB1: custom menu pointers ( 1 byte = 09 = ??) ( 1 byte = 0F = # of items) (15 words = pointers) ( 1 byte = 00) Word 8BE1: pointer to REAL+10 (what significance?) Word 8BEB: pointer to last byte of free memory (end of VAT - 1) REAL 8BF7: the REAL equivalent of the word at (8B29) 8C01: the start of input memory 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 2 set: scroll text window when necessary 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