**** LGENDE :
  suffixes :
    .b  = octet
    .wi = mot (16 bits) / Big Endian
    .wm = mot / Little Endian
    .li	= mot long (32 bits) / B.E.
    .lm	= mot long / L.E.
    .s	= chane de caractres
    .s<n> = chane de <n> caractres
  structures :
    bloc ( en-tte | donnes ) =
      en-tte.wm  taille_donnes.wi  donnes  somme_donnes.wi
        (somme_donnes est la somme des octets du bloc de donnes,
	 considrs non signs)


**** TRANSMISSION SYNCHRONISE :

E = machine qui envoie, R = machine qui reoit

  TANTQUE reste_des_variables
    E : bloc ( 8906 | taille_bloc.li type.b taille_nom.b nom.s )
                 // taille_bloc est la taille du bloc mmoire de la
                 // variable, c'est--dire la taille de la variable + 2
    R : 89 56 00 00
	89 09 00 00
    E : 89 56 00 00
	bloc ( 8915 | 00 00 00 00 taille_var.wm donnes )
    R : 89 56 00 00
  FIN_TANTQUE
  E : 89 92 00 00
  R : 89 56 00 00


**** TEST DE CONNEXION :

O = ordinateur (machine qui appelle),  P = machine pilote

  O : 09 68 00 00
  P : 89 56 00 10    (attention, c'est bien 10)


**** EXTRACTION DU CONTENU :

  O : bloc ( 09A2 | 00 00 00 00 19 00 )
  P : 89 56 00 00
      bloc ( 8906 | 0E 00 00 00 56 taille_nom.b nom.s )
	       // le nom est celui du premier rpertoire (?!)
  O : 09 56 00 00
  TANTQUE encore_des_variables
    O : 09 09 FF FF
    P : 89 56 00 00
	bloc ( 8915 | 00 00 00 00 nom.s8 type.wi taille.li )
	         // type=1F -> rpertoire
		 //   alors taille = nombre de variables
		 //   les noms suivants constituent son contenu
		 // sinon, cf table des types
    O : 09 56 00 00
    SI encore_des_variables ALORS
      P : 89 78 00 00      
    SINON
      P : 89 92 00 00
    FIN_SI
  FIN_TANTQUE
  O : 09 56 00 00


**** LECTURE D'UNE VARIABLE :

  O : bloc ( 09A2 | 00 00 00 00 type.b taille_nom.b nom.s )
  P : 89 56 00 00
      bloc ( 8906 | taille_var.li type.b taille_nom.b nom.s )
  O : 09 56 00 00
      09 09 FF FF
  P : 89 56 00 00
      bloc ( 8915 | 00 00 00 00 taille_donnes.wm donnes )
  O : 09 56 00 00
  P : 89 92 00 00
  O : 09 56 00 00


**** ENVOI D'UNE VARIABLE :

  O : bloc ( 09C9 | taille_var.li type.b taille_nom.b nom.s )
               // le nom de variable contient le rpertoire
  P : 89 56 00 00
      89 09 00 00
  O : 09 56 00 00
      bloc ( 0915 | 00 00 00 00 taille_donnes.wm donnes )
  P : 89 56 00 00
  O : 09 92 00 00
  P : 89 56 00 00
          // en pratique, la TI92 envoie ensuite un FC (arrt de
          // transmission), mais il est ignor par le rcepteur


**** RCEPTION DE BACKUP :

  O : bloc ( 09A2 | 00 00 00 00 1D taille.b ( "main\backup" ) )
  P : 89 56 00 00
  TANTQUE encore_des_donnes
    P : bloc ( 8906 | taille_bloc.wi 00 00 1D taille_nom_rom.b
                      nom_rom.s )
            // nom_rom est du style "2.1"
    O : 09 56 00 00
        09 09 00 04    // peut-tre 09 09 taille_demande.wi
    P : 89 56 00 00
        bloc ( 8915 | constante.l donnes )
            // la constante est bizarre, sans signification apparente,
            // mais est la mme dans tous les blocs d'un mme backup,
            // bien que variable d'un backup  l'autre
    O : 09 56 00 00
  FIN_TANTQUE
  P : 89 92 00 00


**** LECTURE DE LA VERSION DE LA ROM :

  O : bloc ( 09A2 | 00 00 00 00 1D taille.b ( "main\version" ) )
  P : 89 56 00 00
      bloc ( 8906 | taille_bloc.wi 00 00 1D taille.b ( nom_rom.s ) )
          // taille_bloc est la taille du premier bloc d'un backup qui
          // serait ventuellement envoy par la suite (probablement
          // parce que la routine est la mme qu'en dbut de rception
          // de backup...)
  O : 09 5A 00 00


**** ENVOI DE BACKUP :
(l'envoi est en principe prcd d'une lecture de la version de la ROM
pour contrler la version du backup, mais ce n'est pas ncessaire)

  O : bloc ( 0906 | taille_bloc.wi 00 00 1D taille.b ( nom_rom.s ) )
          // taille_bloc est la taille du premier bloc envoy
          // nom_rom est la version de la ROM qui a produit le backup
  P : 89 56 00 00
  TANTQUE encore_des_donnes
    O : bloc ( 0906 | taille_bloc.wi 00 00 1D taille.b ( nom_rom.s ) )
    P : 89 56 00 00
        89 09 taille_attendue.wi  (?)
    O : 09 56 00 00
        bloc ( 0915 | donnes )
    P : 89 56 00 00
  FIN_TANTQUE
  O : 09 92 00 00


**** TABLE DES TYPES :

 code | type | ext | description
------+------+-----+-----------------------------
  00  | EXPR | 92e | expression
  04  | LIST | 92l | liste
  06  | MAT  | 92m | matrice
  0A  | DATA | 92c | donnes
  0B  | TEXT | 92t | texte
  0C  | STR  | 92s | chane de caractres
  0D  | GDB  | 92d | base de donnes graphique
  0E  | FIG  | 92a | figure de gomtrie
  10  | PIC  | 92i | image
  12  | PRGM | 92p | programme
  13  | FUNC | 92f | fonction
  14  | MAC  | 92x | macro-construction de gomtrie
  18  |      | 92h | (non document)
  1D  |      | 92b | backup
  1F  |      | 92g | rpertoire / groupe


**** FORMAT DES FICHIERS .92X :

offset | contenu (variable)           | contenu (backup)
-------+------------------------------+---------------------------------
    0  | "**TI92**"                   |  ''
    8  | 01 00	                      |  ''
   10  | rpertoire.s8                | (1000 0000 0000 0000)
   18  | commentaire.s40              |  ''
   58  | 01 00                        |  ''
   60  | 52 00 00 00                  |  ''
   64  | nom_de_la_variable.s8        | nom_de_la_rom.s8
   72  | type.li                      |  '' ($1D)
   76  | taille_du_fichier.li         |  ''
   80  | A5 5A                        |  ''
   82  | bloc                         |
       |   0.l                        |  donnes
       |   taille_de_la_variable.wm   |
       |   donnes		      |
    ?  | somme_des_octets_du_bloc.wi  | somme_des_octets_de_donnes.wi

