         +-------------------------------------------------------+
         |               TI PROTOCOL  INFORMATION                |
         +-------------------------------------------------------+
                   by Pascal BOURON (bouron@chez.com)
                            Version 1.2   (08/10/99)


This document is the updated version of the old 1.1 version (1996). 
I have add some informations about the hardware, after a lot of 
mail received about that.
Sorry for the grammatical or spelling mistakes, but english is not 
my native language.



                        +-==========================-+
                        |  O   - Table of contents   |
                        +-==========================-+

O   - Table of contents
I   - Protocol Texas Instruments
       11 Generalities
       12 Devicetype
       13 Command
       14 Protocol
       15 Variable Header Format
           151 TI-82
           152 TI-85
           153 TI-92
           154 Extracted from Linkprot.txt by Per Finander
       16 DataPart Format
           161 TI-82
           162 TI-85
           163 TI-92
II  - Backup
       21 TI-82
       22 TI-85
       23 TI-92
III - Special
       31 TI-85
           311 Screendump
           312 PrtScrn
       32 TI-92
           321 Screendump
           322 SEND command
           323 GET a
           324 Request function
               3241 Backup
               3242 Variable
               3242 Content
           325 Remote control of the TI-92
           326 Command 92 by link port

IV  - Hardware description : low level protocol
       41  Electronics Shema
       42  Low Level Protocol
       43  Z80 Assembly program to send / receive a byte

V   - Annexes 

Section A : Index
        A1 TI-82
        A2 TI-85
        A3 TI-92
Section B : Examples
        B11 Transmission of Var with the 82
        B12 Transmission of Var with the 85
        B13 Transmission of Var with the 92

       ( B21 Information about the TI-82 Backup )
        B22 Information about the TI-85 Backup
       ( B23 Information about the TI-92 Backup )

Section C : Other informations
       ( C11 Format of Variable in the TI82 )
        C12 Format of Variable in the TI85
        C13 Format of Variable in the TI92

Section D : Reference documents




                        +-==========================-+
                        |    I   - Protocol T.I.     |
                        +-==========================-+

 11 Generalities
-===============-

Thanks to Per Finander, Ben Eater and George Nachman.
The TI82/TI85 and TI92 have the same protocol.
I suppose that all other TI use also this protocol.
For the description of the low level protocol see IV


All transmissions are in packets.
Format af a packets:
1 Byte   : Devicetype
1 Byte   : Command
1 Word   : Datalength
n bytes  : Data
1 word   : Checksum if n>0
All words are in LLHH format (LSB before MSB)

Datalength : In the 92, Datalength's word can be different of 0 WITHOUT
           data and checksum. In this case, this word in an indormation:
           09 87 xx xx : See 326
           89 56 00 01 : 92 Receive OK but Not ready
           09 09 xx xx : Ready to receive xx xx bytes

Checksum : Exist if n>0. Checksum in the sum of all byte of the data.

 12 Devicetype
-=============-
02 : Computer > TI82
03 : Computer > TI83
05 : Computer > TI85
06 : Computer > TI86
09 : Computer > TI92
12 : TI92 > CBL ???
15 : ?? > TI85             
82 : TI82 
82 : TI83 
85 : TI85 
85 : TI86 
89 : TI92 

 13 Command
-==========-
06 : Variable header
09 : Wait Data/Continue
0D : SEND ???
15 : Data part
36 : Refused                  (Not used on the 92, 92 can accept all var ?)
56 : OK
5A : CHK error , send again
68 : Test if 92 is ready      (See 327) (TI-92)
6D : Screen Dump
78 : Continue                 (See 325) (TI-92)
87 : Direct command           (See 326) (TI-92)
92 : End of transmission
A2 : Request                  (See 325) (TI-86 / TI-92)
C9 : Request                            (TI-86)

 14 Protocol
-===========-
Transmission of a variable from device1 to device2
1)Device1 : Var header (Name,type,length)
2)Device2 : OK
3)Device2 : WAIT
4)Device1 : OK
5)Device1 : DATAPART
6)Device2 : OK
7)Device1 : END of transmission
8)Device2 : OK

If there are several variable, repeat 1) to 6)


 15 Variable Header Format
-=========================-

151) TI-82
----------
Variable header: Always 11d bytes
Ll Lh Ty [NAME]
$100*Lh+Ll = Size of the Var
Ty         = Type of the variable
NAME       = Always 8 char, zero-terminated if length<8
(See 154 or Linkprot.txt by Per Finander for the var-code)



152) TI-85
----------
Variable header: From 5 bytes to 12d bytes
Ll Lh Ty Nl [NAME]
$100*Lh+Ll = Size of the Var
Ty         = Type of the variable
Nl         = Name length
(See 154 or Linkprot.txt by Per Finander for the var-code)

153) TI-92
----------

Variable header: From 7 bytes to 23d bytes
LL LH HL HH Ty Nl [NAME]
HH HL LH LL= Size of the Var in Memory (Real Size +2)
Ty         = Type of the variable
Nl         = Name length

(See "TI-92 LINK INTERFACE PROTOCOL" by Ben Eater and George Nachman)


154) [Extract from  Linkprot.txt by Per Finander's file ]
---------------------------------------------------------

The "Type"-byte for a TI85 can have one of the following values (hex):

00    Real
01    Cplx
02    Vectr  03  Vectr complex
04    List   05  List  complex
06    Matrx  07  Matrx complex
08    Const  09  Const complex
0A    Equ
0B    Range
0C    Strng
0D-10 GDB
11    Pict
12    Prgm
13    Range
14    PrtScreen (without Name) !!
15    ?
16    ?
17    Func  (range)
18    Pol   (range)
19    Param (range)
1A    Difeq (range)
1B    ZRCL  (range)
1C    ?
1D    Backup (without Name) !!
---------------------------------------------------------------------------
(See Linkprot.txt for a complete description)

 16 DataPart Format
-===================-

161) TI-82
----------
Same as in Memory
LL HH xx xx xx ....  xx
HHLL : length of the variable

Example: (See Section B-11)

162) TI-85
----------
Same as in Memory
For PRGM,STRING...
LL HH xx xx xx ....  xx
HHLL+4+length(NAME) : length of the variable in the MEM Menu
For REAL,PICT,...
xx xx xx

Example: (See Section B-12)


163) TI-92
----------
00 00 00 00 HH LL .......
HHLL : length of the variable.(real size)
In memory, there are from HH LL to byte before chk

Example: (See Section B-13)


                        +-==========================-+
                        |         II  - BACKUP       |
                        +-==========================-+

 21) TI-82
-=========-
            Sorry , no informations about this.

 22) TI-85
-==========-
Thanks to David Boozer (adb2y@virginia.edu)
TI-85    : 85 06 09 00 B1 08 1D 12 00 23 00 F7 8B 8D 02
Computer : 05 56 00 00
           05 09 00 00
TI-85    : 85 15 B1 08 .. .. Part 1 .. ..
Computer : 05 56 00 00
TI-85    : 85 15 12 00 .. .. Part 2 .. ..
Computer : 05 56 00 00
TI-85    : 85 15 23 00 .. .. Part 3 .. ..
Computer : 05 56 00 00
( These values have been found with a ROM 3.0 after a reset.)

More Detail : See B-22


 23) TI- 92
-===========-
Thanks to David Ellsworth (davidells@aol.com) for his help.

The TI-92 Send backup if "anyone" ask it. Here is the conversation
of the request send by a computer and the answers reply by 92.


WHO?       Byte send                                    TRANSLATE
------------------------------------------------------------------------
Computer : 09 68 00 00                                  Test
TI-92    : 89 56 00 00                                  OK
Computer : 09 A2 11 00 00 00 00 00 1D 0B 6D 61          Send me (Backup)
           69 6E 5C 62 61 63 6B 75 70 9F 04             main/backup
TI-92    : 89 56 00 00                                  OK
           89 06 09 00 00 04 00 00 1D 03 31 2E 33 B6 00 Backup 1kb 1.3
Computer : 09 56 00 00                                  OK
           09 09 00 04                                  Ready to receive 1kb
TI-92    : 89 56 00 00                                  OK
           89 15 00 04 .. .. 1 k Of data .. .. .. CH CL 1kb of data
Computer : 09 56 00 00                                  OK
TI-92    : 89 06 09 00 00 04 00 00 1D 03 31 2E 33 B6 00 Backup 1kb 1.3
Computer : 09 56 00 00                                  OK
           09 09 00 04                                  Ready to receive 1kb
TI-92    : 89 56 00 00                                  OK
           89 15 00 04 .. .. 1 k Of data .. .. .. CH CL 1kb of data
Computer : 09 56 00 00                                  OK
          (* N with N>=38)
TI-92    : 89 06 09 00 ll hh 00 00 1D 03 31 2E 33 B6 00 Backup hhll bytes 1.3
Computer : 09 56 00 00                                  OK
           09 09 hh ll                                  Ready to receive hhll
TI-92    : 89 56 00 00                                  OK
           89 15 00 04 .. hhll bytes of data   .. CH CL 1kb of data
Computer : 09 56 00 00                                  OK
TI-92    : 89 92 00 00                                  END of Transmission
Computer : 09 56 00 00                                  OK

Rem :
1)  When the computer reply 09 09 00 04, the 00 04 is not important, and
can be replaced by another value, with no change.
2) I think that the 1.3 is version of the Rom. If anyone with another version
as the 1.3 can confirm to me.
3) If the first reply of TI92 is 89 56 00 01, then the 92 is not ready.
   (See 327)


                        +-==========================-+
                        |   III - Special Function   |
                        +-==========================-+

 31) TI-85
-==========-

311) Screendump
---------------
Computer : 05 6D 00 00
TI-85    : 85 56 00 00
           85 15 00 04 .. .. Memory part , From FC00 to FFFF ... CHK
Computer : 05 56 00 00

312) PrtScrn
------------
TI-85    : 85 06 03 00 00 04 14 18 00
Computer : 05 56 00 00
           05 09 00 00
TI-85    : 85 56 00 00
           85 15 00 04 .. .. Memory part , From FC00 to FFFF  .. CHK
Computer : 05 56 00 00

 32) TI-92
-==========-

321) Screendump
---------------
Computer : 09 6D 00 00
TI-85    : 89 56 00 00
           89 15 00 0F .. .. .. .. .. .. .. .. .. .. .. .. .. .. CHK
Computer : 09 56 00 00

322) Send {1,3.1}
-----------------
TI-92    : 89 06 07 00 07 00 00 00 04 01 FF 0B 01 (List lenght 7 , name $FF)
Computer : 09 56 00 00
           09 09 00 00
TI-92    : 89 15 0B 00 02 00 00 00 20 31 20 33 2E 31 00 05 01 (02 = # of number)
Computer : 09 56 00 00
TI-92    : 89 92 00 00
Computer : 09 56 00 00

323) Get a
----------
TI-92    : 89 A2 06 00 00 00 00 00 00 00 00 00
Computer : 09 56 00 00
           ???????????
       Can anyone help me for the end of this conversation

324) Request function
---------------------
To ask a variable, backup or content to the 92.

 3241) Backup  : See 23

 3242) Variable
(Example of request : main\abd , type TEXT)
Computer : 09 68 00 00                                  ; TI-92 ready ?
TI-92    : 89 56 00 00                                  ; 0000= yes, 0001= no
Computer : 09 A2 0E 00 00 00 00 00 00 0B 08 6D 61 69 6E ; The request
           5C 61 62 64 3B 03                            ; (0B = TEXT)
TI-92    : 89 56 00 00
If the variable doesn't exist, the conversation stops here.
TI-92    : 89 06 09 00 12 00 00 00 0B 03 61 62 64       ; Var header
Computer : 09 56 00 00
           09 09 00 00
TI-92    : 89 56 00 00
           89 15 16 00 00 00 00 00 00 10 00 0C 20 4A 75 ; The TEXT
           73 74 20 61 20 74 65 73 74 00 E0 23 05
Computer : 09 56 00 00
TI-92    : 09 92 00 00
Computer : 09 56 00 00


 3242) Content (DIR)
Computer : 09 68 00 00                                  ; See 3241
TI-92    : 89 56 00 00                                  ; See 3241
Computer : 09 A2 06 00 00 00 00 00 19 00 19 00          ; Order of DIR ?
TI-92    : 89 56 00 00
           89 06 0A 00 0E 00 00 00 53 04 main 0A 02     ; Current folder=main
Repeat
 Computer: 09 56 00 00                                  ; OK
           09 09 FF FF                                  ; Waiting ...
 TI-92   : 89 56 00 00
           89 15 18 00 00 00 00 00 m a i n 00 00 00 00  ; 31 =<FOLDER>
           31 00 01 00 00 00 C5 01                      ; 01 =# of var in FOLD.
 Computer: 09 56 00 00
 TI-92   : 89 xx 00 00                                  ; xx= 78 :Continue
until xx= 92                                            ; xx= 92 :End
Computer : 09 56 00 00
Each entry of the 92 is in this format :
00 00 00 00
n1 n2 n3 n4 n5 n6 n7 n8 : Name of the variable
ty : Type of the variable
     31 = Folder
     00 = Variable is editing : No type ( Or EXPR)
st : 00 = Variable OK
     01 = Variable is editing
ll lh hl hh : Size of the variable (or # of variable for folder)


325) Remote control of the TI-92
--------------------------------
Press <F5>+<DIAMOND>+<(>+<R>
To control the 92, you must send a word through the link port.
This word is the code of the key (page 484 of the US manual,
Section B8 to B12 of the French manual)
After each word send, the 92 replies by a $FF.
When there is a result (after an ENTER), the 92 send this result
in FF-terminated.
Ex:
Computer : 0031  002B  0041  000D
TI -92         FF    FF    FF    FF 412B31FF
<1> <+> <a> <ENTER> , the 92 reply <a+1>
You can do graph, factor, edit-text...
To leave this mode, send the command of <F5> <DIAMOND + (> <R>


326) Command 92 by link port
----------------------------
To use this mode, not necessary to put the 92 in remote mode.
Format of this mode :
Computer : 09 87 ll hh : Send code of the hhll key
TI-92    : 89 56 00 00 : OK
For example, to do <1> <+> <a> <ENTER>
Computer : 09 87 31 00     <1>
TI-92    : 89 56 00 00
Computer : 09 87 2B 00     <+>
TI-92    : 89 56 00 00
Computer : 09 87 41 00     <a>
TI-92    : 89 56 00 00
Computer : 09 87 0D 00     <ENTER>
TI-92    : 89 56 00 00
=> The result is NOT sent by the link port.
You can use this mode to put the 92 in the remote mode




                        +-===========================-+
                        |  IV  - HARDWARE DESCRIPTION |
                        +-===========================-+



 41) Electronics Shema
 ---------------------

There are 3 wires in the TI-Port :
 * 1 line for ground 
 * 2 lines for data (a Red and a White in the TI-85)


Each data lines have the same circuit :
[Schema extract from TI-PORTS.TXT  by Dan Eble & Dines Justesen ]
(Please refer to this document for more explanations)
 
        Vdd
        ---
         |
         < 10 KOhms
         >
         |
         V Diode
         |
    out--O---------- PDR0/1
         |
         < 470 Ohms
         >
         |
    NPN  \__/\/\____ PDR2/3 
         /  33 KOhms
         |
       __|___
        Gnd

PDR0/1 : is the value see, when you read the port
PDR2/3 : is apply, when you write to the port
Out    : is the wire.

When there aren't transmission, the two Calculator apply 5 Volt on each lines

Now, if you plug a TI and a PC(or another TI or CBL), you have twice this system 
(one for TI, and one for PC)
(The "out" are linked)

If the TI applies 1 and the PC 1 : The wire is at 5V
If the TI applies 0 and the PC 1 : The wire is at 0V
If the TI applies 0 and the PC 0 : The wire is at 0V
If the TI applies 1 and the PC 1 : The wire is at 0V


42) Low Level Protocol
----------------------

So, now the protocol :
To send a bit (1) to the PC, the TI do :

          TI    WR     PC
before:   11    11     11
then      10    10     11 (Start of the transmission)
   The PC see 01 during it apply 11 : It knows the TI applies 10, and ack. 
   with 01 :
          10    00     01
   The TI see 00 during it apply 10 : It knows the PC applies 01 (in fact 0x, 
  but 00 is reserved for 'ERROR'), and ack. with 11
          11    01     01
   The PC see 01 during it apply 01 : It knows the TI applies 11 (because 01 isn't
   compatible with the protocol). It know the transfert of this bit is finished
   and applies 11

So, imagine the same thing to send a "0". Just invert "Red" and "White".

   TI   RB  PC
   11   11  11
   01   01  11
   01   00  10 
   11   10  10
   11   11  11

To indicate an error (no respect of the protocol) the TI (or PC)
applies 00. So the PC (or TI) see this 00 , and applies 11 (and hopes
see 01 or 10). But it see always 00, and know there are a big problem.


43 ) Z80 Assembly program to send / receive a byte
--------------------------------------------------

;-----------------------------
;            Read_byte
;         By Pascal Bouron
;-----------------------------
; ; INPUT   : no
; OUTPUT  : a           = Read byte value
Read_byte:
	  push bc
          push de
                ld    e,1       ; for the OR
                ld    c,0       ; byte receive
	        ld    b,8       ; counter
                ld    a,$C0
                out   (7),a
rb_w_Start:
		in    a,(7)
		and 3
                cp  3
                jr    nz,rb_get_bit
		CALL_(Delay)
                jr    rb_w_Start	;Attend le un bit
rb_get_bit:
                cp    2
                jr    z,rb_receive_zero
                ld    a,c
                or    e
                ld    c,a
                ld    a,$D4
                out   (7),a
                jr    rb_waitStop

rb_receive_zero:
                ld    a,$E8
                out   (7),a
rb_waitStop:
                CALL_(Delay)
		in    a,(7)
		and   3
                jr    z,rb_waitStop
                ld    a,$c0
                out   (7),a
                rl    e
	        djnz	rb_w_Start
                ld    a,c
	  pop de
          pop bc
          ret

;-----------------------------
;            Send_byte
;         By Pascal Bouron
;-----------------------------
; INPUT   : a
; OUTPUT  : no
Send_byte:
	  push  bc
	        ld    b,8
                ld    c,a	;byte to send
                ld    a,$C0
                out   (7),a
w_setport3:
		in    a,(7)
		and 3
                cp  3
                jr    z,calc_bit
		CALL_(Delay)
                jr    w_setport3	;Attend le Setport(3)
calc_bit:
                ld    a,c
	        and   1
	        jr    z,send_one
send_zero:
	        ld    a,$E8
	        out   (7),A
                jr    wait_setport
send_one:
	        ld    a,$D4
	        out   (7),A
wait_setport:
		CALL_(Delay)
                in    a,(7)
		and   3
                jr    nz,wait_setport 	;Attend le Setport
	        ld    a,$C0
	        out   (7),A
	        srl c
	        djnz w_setport3
          pop bc
          ret

;-----------------------------
;            Delay AND Test_ON
;-----------------------------
; INPUT
;       NONE
; OUTPUT
;       NONE
; rem : Go to Error_Routine if [ON] Pressed

Delay:
        in      a,(3)
        and     8
        ret     nz
        ld      a,9
        JUMP_(Error_Routine)


WARNING : If you leave the Error_Routine by 'ret' you return just after the
   call(send_byte) or call(read_byte)


                        +-=================-+
                        |      ANNEXES      |
                        +-=================-+



---------------------------------------------------------------------------
                                                          SECTION A - Index

TI-82 :
  Backup                                        : 21
  Checksum calcul                               : 11
  Command byte                                  : 13
  DataPart                                      : 161
  Devicetype (02 or 82)                         : 12
  Format of .. See this word
  Header format                                 : 151
  Protocol                                      : 11,14
  Transmission                                  : 11,14


TI-85 :
  Backup                                        : 22
  Checksum calcul                               : 11
  Command byte                                  : 13
  DataPart                                      : 162
  Devicetype (05 or 85)                         : 12
  Format of ... See this word
  Header format                                 : 152
  Protocol                                      : 11,14
  PrtScreen                                     : 312
  ScreenDump                                    : 311
  Transmission                                  : 11,14
  Variable format                               : C12
  VAT                                           : C22

TI-92 :
  Backup                                        : 23
  Checksum calcul                               : 11
  Command byte                                  : 13
  DataPart                                      : 163
  DataLength (Special ...)                      : 11
  Devicetype (09 or 89)                         : 12
  Format of ... See this word
  Get (command)                                 : 323
  Header format                                 : 153
  Protocol                                      : 11,14
  Remote                                        : 325,326
  Request                                       : 324
    backup                                      : 23,3241
    content                                     : 3243
    variable                                    : 3242
  ScreenDump                                    : 321
  Send (command)                                : 322
  Transmission                                  : 11,14
  Variable format                               : C13


---------------------------------------------------------------------------
                                                       SECTION B : Examples
                      ------------------------
                      B1 - Transmission of var
                      ------------------------

   B11) Transmission of Var with the 82
   ====================================
Transmission of
ABC:PROGRAM
:[A]
:
:
:
:

1)TI-82    : 82 06 0B 00 09 00 05 41 42 43 00 00 00 00 00 D4 00
2)Computer : 02 56 00 00
3)           02 09 00 00
4)TI-82    : 82 56 00 00
5)           82 15 09 00 07 00 5C 00 3F 3F 3F 3F 3F 9E 01
6)Computer : 02 56 00 00
7)TI-82    : 82 92 09 00
8)Computer : 02 56 00 00

1) Var header (Length 000B)
   09 00 : Size of the var , here 9 bytes
   05    : Type , here PRGM
   41 42 43 00 00 00 00 00 = ABC : Name
   D4 00 : Checksum
2) OK
3) Ready to receive
4) OK
5) Data part (Length 0009)
   07 00 : Length
   5C 00 : [A]
   3F 3F 3F 3F 3F : CR CR CR CR CR
   9E 01 : Ckecksum
6) OK
7) End of transmission, 0009h bytes was sent.
8) OK


   B12) Transmission of Var with the 85
   ====================================

Transmission of ABC:REAL=3.1415926535898
1)TI-85    : 85 06 07 00 0A 00 00 03 41 42 43 D3 00
2)Computer : 05 56 00 00
3)           05 09 00 00
4)TI-85    : 85 56 00 00
5)           85 15 0A 00 00 00 FC 31 41 59 26 53 58 98 30 03
6)Computer : 05 56 00 00
7)TI-85    : 85 92 0A 00
8)Computer : 05 56 00 00

1) Var header (Length 0007)
   0A 00 : Size of the var , here 10d bytes
   00    : Type , here real
   03    : Length of the name
   41 42 43 = ABC : Name
   D3 00 : Checksum
2) OK
3) Ready to receive
4) OK
5) Data part (Length 000A)
   00 00 FC 31 41 59 26 53 58 98 = 3.1415926535898
6) OK
7) End of transmission, 000Ah bytes was sent.
8) OK


   B13) Transmission of Var with the 92
   ====================================

Transmission of a:Expr=1.23
1)TI 92    : 89 06 07 00 0C 00 00 00 00 01 61 6E 00
2)Computer : 09 56 00 00
3)           09 09 00 00
4)TI 92    : 89 56 00 00
5)           89 15 10 00 00 00 00 00 00 0A
             40 00 12 30 00 00 00 00 00 23 AF 00
6)Computer : 09 56 00 00
7)TI-92    : 89 92 00 00
8)Computer : 09 56 00 00

1) Var header (Length 0007)
   0C 00 00 00 : Size of the var , here 12d bytes
   00    : Type , here EXPR
   01    : Length of the name
   61    : a : Name
   6E 00 : Checksum
2) OK
3) Ready to receive
4) OK
5) Data part (Length 0010)
   00 00 00 00 : ???
   00 0A : Length of var
   40 .. : Var (See 163b)
6) OK
7) End of transmission, 000Ah bytes was sent.
8) OK


                      ------------------------
                      B2 - Backup Informations
                      ------------------------


   B22 Information about the TI-85 Backup
   ======================================
In the BACKUP.85B
0000  >0007      **TI85**
0008  >000A      1A 0C 00
000B  >0034      "Backup file dated 04/28/96,17:02",0
0035  >0036      ll hh : # of byte from next to Checksum
0037  >0038      09 00 : Size of the Var header
0039  >003A      Size of Part 1 ($08B1)
003B             Code of Backup (1D)
003C  >003D      Size of Part 2 (n2)
003E  >003F      Size of Part 3 (n3)
0040  >0041      $F7 $8B
0042  >0043      Size of Part 1 (Always? B1 08)
0044  >08F4      Part 1
08F5  >08F6      Size of Part 2 (here 12 00) (n2)
08F7  >08F6+n2   Part 2
nnnn  >nnnn+1    Size of Part 3 (here 23 00) (n3)
nnnn+2>nnnn+1+n3 Part 3
xxxx  >xxxx+1    Checksum

Description of each packet
--------------------------
Part 1 :TI-85 Memory
(0000 is the first byte of this packet)
Size = $08B1 (2225d bytes)
0000->08B0 : Memory from : $8346 -> $8BF6

byte $8B2C : Floating point mode (3=Normal;4=Float0;5=Float1;..;F=Float11)
word $8B2D : Pointer of current Floating point. (07E6)

Part 2 :User Memory ($8BF7)
(0000 is the first byte of this packet)
0000->nnnn-1 : Memory from $8BF7 to $8BF7-1+nnnn

Part 3 :VAT   (From $FA6F downto ($8BEB+1))
(Variable Allocation Table)
(See C22)

---------------------------------------------------------------------------
                                                          SECTION C : Other
                           --------------------
                           C1 - Variable format
                           --------------------

   C11 Information about the TI-82 Variables
   =========================================
                (see  82-VAR.TXT in the REFERENCES section)


   C12 Information about the TI-85 Variables
   =========================================

Format of some variables:
PRGM  : LL HH PROGRAM
STRNG : LL HH STRING
REAL  : El Eh Rg N1 N2 N3 N4 N5 N6 N7
      With EhEl : Exponent    \
           Rg   : Range        > Value =Number*10^(Exponent+100*(Range-$FC))
           Ni   : Number      /
      (See the document of David Boozer for more development)




   C13 Information about the TI-92 Variables
   =========================================

  Expr   (00)
  -----------
00 00 00 00 Th Tl [EXPR]
ThTl : Size of EXPR

* Data part format for an expr
An expression must be read from the end to the begining.
The first byte (Last) is an ID

with number
ID    TYPE      SIZE  Example
------------------------------
1F    INTEGER   Var.  0C 01 1F =12d >> 0C=12 01=1 byte
23    Real      12    40 00 12 30 00 00 00 00 00 23 = 1.23>> Value=<signe><number>*10^[<Exponent>-$4000-$D]

Special ID
----------
02 =  r    03 =  s   04 =  t   05 =  u   06 =  v   07 =  w   08 =  x
09 =  y    0A =  z   0B =  a   0C =  b   0D =  c   0E =  d   0F =  e
10 =  f    11 =  g   12 =  h   13 =  i   14 =  j   15 =  k   16 =  l
17 =  m    18 =  n   19 =  o   1A =  p   1B =  q   26 =  i (i^2=-1)
8B =  +    8F =  *   91 =  /


Example :
00 00 00 00 : ??
00 10 : size = 16 bytes
40    : exponent =(4001$ and 7FFF$)-4000$-$D=-12d
01    : signe =4001$ and $8000 =0 => (+)
12 20 00 00 00 00 00  : number=12200000000000
                  => 12200000000000*10^(-12) =12.2
23   : real

04   : value = 4$    \
01   : size=1         > Integer size 1 , value 4
1F   : integer       /

18   : n
8F   : *
8B   : +
=> +(*(n,4),12.2) = 12.2+4*n

  TEXT   (0B)
  -----------
00 00 00 00 Th Tl Ch Cl [YOUR TEXT] 00 E0
ThTl : Size of text + 4
ChCl : Cursor Pos

! Warning ! The first byte after CR is a command and is put before ":"

  PIC   (10)
  ----------
00 00 00 00 Sh Sl Rh Rl Ch Cl [YOUR PIC] 00 DF
ShSl : Size of Pic + 6
RhRl : # of row
ChCl : # of col
In "Normal" PIC , ShSl = RhRl*INT(((ChCl-1)/8)+1)
But, the 92 don't verify this. RhRl and ChCl is only use when you display
the picture.



                           ---------------
                           C2 - VAT format
                           ---------------

   C21 Information about the TI-82 VAT
   ===================================
                (see  82-VAR.TXT in the REFERENCES section)


   C22 Information about the TI-85 VAT
   ===================================

The format of each entry is :
NN .. NN Ln HH LL Ty
With :
Ty     = Type of variable
HHLL   = Position in RAM
Ln     = Length of the name
NN..NN = NAME

Example of VAT (without Zshell):
43 42 41 03 8C 16 12 43 42 02 8C 13 0C 41 01 8C 09 00 23 01 8C 00 12 21
C  B  A              C  B              A              #              !
01 8B FE 12 73 6E 41 03 8B FB 0C 74 61 74 53 79 05 8B F9 04 74 61 74 53
            s  n  A              t  a  t  S  y              t  a  t  S
78 05 8B F7 04
x

xStat : LIST  $8BF7 (Type $04)
yStat : LIST  $8BF9 (Type $04)
Ans   : STRNG $8BFB (Type $0C)
!     : PRGM  $8BFE (Type $12)
#     : PRGM  $8C01 (Type $12)
A     : REAL  $8C09 (Type $00)
BC    : STRNG $8C13 (Type $0C)
ABC   : PRGM  $8C16 (Type $12)
! and # are used by ENTRY.


   C23 Information about the TI-92 VAT    
   ===================================
                (see  vatinfo.txt in the REFERENCES section)



---------------------------------------------------------------------------
                                                     SECTION D : REFERENCES

D1) General documents

* LINKPROT.TXT : Link protocol - V2.0 (January 1995)
               By Per Finander (pfimdt93@tufvan.hv.se)

               In this document, you can find all var-code of the
               TI-82 and TI-85, C  and Pascal IO-routines to send
               or receive variables, and a demo program.

* 82-PORTS.TXT (see in TI82/TI83 section)

* port_7.txt   (see in TI85/TI86 section)

* ti-ports.txt (see in TI85/TI86 section)



D2) TI 82 / TI 83
* 82-PORTS.TXT : A Programmer's Guide to TI-82 Ports - Version 0.6 (1999)     
                 by Mattias Lindqvist & Dines Justesen
                 email: c958362@student.dtu.dk
                 www  : http://www.student.dtu.dk/~c958362

                 A very good description of the TI Link port 
                 (among other things)

* 82hack.txt   : Hacking the TI-82 calculator (July 1997)
                 by Mattias Lindqvist <ml@df.lth.se>                                 |

                 An essential document for the TI82

* 82-VAR.TXT   : A Programmer's Guide to the TI-82        Version 0.3 (1997)
                 Mattias Lindqvist & Dines Justesen
                 email: Dines Justesen at c958362@student.dtu.dk or
                        Mattias Lindqvist ml@df.lth.se

D3) TI 85 / TI 86
* Hacking the TI-85 CALCULATOR (September 1994)
               By David Boozer (adb2y@virginia.edu)

               Lot of very interesting informations about the TI85.

* TI-RAM.TXT     V1.1 (1997)
               By Dan Eble, Rob Taylor & Dines Justesen
               mail : c958362@student.dtu.dk
               A description of the 85'RAM

* port_7.txt   TI-85 LINK info /  Port 7  (1995)
                by Branislav Bozgai
                bozgai@svf.stuba.sk
                A description of the TI link Port

* ti-ports.txt  A Programmer's Guide to the TI-85 Ports     Version 1.1 (1999)
                by Dan Eble & Dines Justesen
                email: c958362@student.dtu.dk
                www: http://www.student.dtu.dk/~c958362.
                A description of the TI link Port

* ti86prot.txt   TI-86 Link Protocol and Variable Format Guide 
                 by Tim Singer
                 email : tsinger@gladstone.uoregon.edu

52) TI 92 
* TI-92 LINK INTERFACE PROTOCOL (January 1996)
               By Ben Eater (themouse@wam.umd.edu) and
               George Nachman (ltduck@wam.umd.edu)

               In this document, you can find all(?) var-code of
               the TI-92, C IO-routines to send or receive
               with the parallele link.

* TI-92 Technical Information (1996.03.29)
               by David Ellsworth (davidells@aol.com)
               ftp://users.aol.com/davidells/TI-Calc/TI-92_tech.txt

               Lot of very interesting informations about the TI92.

* vatinfo.txt   VAT Description v1.2
                by BENOIT SCHERRER
                email :  p.c.scherrer@wanadoo.fr




---
Thanks to all above authors for the excellent documentation.
