  Ce source est conu pour tre facilement rutilis : il est bas sur
la classe TI92 qui fournit toutes les fonctions de communication :

  TI92(const char *dev)
      constructeur qui initialise les communications sur le
      priphrique <dev> (normalement /dev/cua? ou /dev/ttyS?)

  int operator!()
      renvoie une valeur non nulle si quelque chose n'a pas march
      (ouverture impossible du priphrique, par exemple)

Transmissions synchronises :

  int reception()
      boucle d'attente qui appelle le fonction virtuelle
      recepVar(Variable&)  chaque rception de variable, avec comme
      argument la variable.

  int envoi(Variable &V)
      on peut se douter de ce qu'elle fait ...

  int finEnvoi()
      doit tre appel  la fin d'une squence d'envois, pour
      signifier qu'il n'y a plus de variables  envoyer et terminer le
      processus ct rcepteur


Transmissions pilotes (remote control) :

  int testLink()
      effectue un simple test de connexion, et renvoie une valeur non
      nulle en cas d'chec

  int contenu()
      lit le contenu de la machine et appelle la fonction virtuelle
      entreeDir(char *nom,Type type,unsigned short taille), o <nom>
      est le nom de la variable ou du rpertoire, <type> est le type
      de variable ou TI92::Repertoire (type numr), et <taille> la
      taille telle qu'affiche dans l'cran Var-Link ou le nombre de
      variables pour un rpertoire.

  int version(char *&nv)
      alloue un bloc <nv> et y crit le numro de version (tel qu'il
      est affich en faisant meta-( sur l'cran PrgmIO)

  int prends(char *nv,Variable &V)
      lit la variable nomme <nv> et l'enregistre dans <V>

  int mets(Variable &V)
      envoie la variable <V>

  int recBackup(Variable &V)
      effectue un backup et l'enregistre. Cette fonction appelle la
      fonction virtuelle etapeRecBkp(long)  chaque tape (donc 
      chaque kilo-octet reu en pratique) avec comme argument la
      taille reue en tout, ceci pour permettre de mettre en place un
      indicateur de progression. De plus, la fonction finRecBkp() est
      appele en fin de processus.

  int envBackup(Variable &V)
      envoie le backup contenu dans V, SANS VERIFIER LA VERSION DE LA
      ROM, ce qui doit donc tre fait  la main, car une mauvaise
      version peut entraner des problmes (les adresses des variables
      systme peuvent chager, par exemple). les fonctions
      etapeEnvBkp(long) et finEnvBkp() jouent le mme rle que
      prcdemment.

  Toutes les fonctions renvoient 0 en cas de succs et une valeur non
nulle en cas d'chec, caractristique de l'endroit du problme (se
reporter au source pour dterminer la nature de celui-ci) Cette classe
est dfinie dans ti92.h et ses mthodes dans ti_io.cc pour les
fonctions de base, ti_sync.cc pour les transmissions synchronises et
ti_remote.cc pour le remote-control. La classe TI92::Variable contient
les champs suivants :

  char nom[18]
      nom de la variable sous la forme "rpertoire\nom", ou nom de la
      version de le ROM pour un backup

  TI92::Type type
      type de variable dans le type numr TI92::Type. Le type
      Repertoire (ou Groupe, qui est quivalent), est dfini mme si
      les groupes ne sont pas supports par TIFile (voir plus loin).

  unsigned long taille
      taille de la variable (correspond  ce qui est affich dans
      Var-Link moins deux, c'est--dire la taille effective des
      donnes de la variable), ou la taille du backup

  unsigned char *data
      pointe sur les donnes de la variable ou du backup


  La classe TIFile, dfinie dans tifile.h et tifile.cc, est destine 
simplifier la lecture et l'criture des variables. Les champs utiles
sont les suivants :

  char rep[8]
      rpertoire contenant la variable ou "\r" pour un backup

  char comm[40]
      commentaire accompagnant la variable

  char nom[8]
      nom de la variable ou de la ROM pour un backup

  long type
      type de la variable, correspondant aux valeurs du type numr
      TI92::Type

  long taille
      taille des donnes du fichier (sans l'en-tte), donc en principe
      taille du fichier moins 84

  unsigned char tvar[2]
      taille des donnes de la variable, uniquement dans le cas d'un
      variable. Pour un backup, il s'agit des premires donnes du
      backup

  Les mthodes de la classe TIFile sont alors les suivantes :

  TIFile()
      constructeur avec initialisation des parties constantes de
      l'en-tte

  TIFile(istream &f)
      constructeur avec lecture de l'en-tte sur le flux <f>

  void constantes()
      initialisation des parties constantes, caractristiques des
      fichiers .92?

  bool operator!()
      renvoie 0 si l'en-tte est intgre et une valeur non nulle s'il
      n'est pas valide

  void ecris(TI92::Variable &V,ostream &f)
      remplit l'en-tte avec les donnes tires de la variable <V> et
      crit l'en-tte et les donnes sur le flux <f>. En pratique,
      l'criture se fera par une instruction de la forme
      TIFile().ecris(V,f)

  int lis(istream &f,TI92::Variable &V,bool nrep=true)
      similaire en lecture, avec un particularit : si <nrep> vaut
      false, seul le nom de la variable (et pas le rpertoire) est
      crit dans le champ <nom> de V, c'est--dir equ'on aura "nom" au
      lieu de "rp\nom" (ceci n'a biensr aucun effet dans le cas d'un
      backup)

  Au vu de ceci, on voit bien que trans92 n'est qu'une mise en forme
sommaire de cette classe.

  J'encourage quiconque  rutiliser ces classes dans ces programmes,
 la seule condition qu'il ne les modifie pas (ce que dit la GPL, pou
tre exact), qu'il prcise mon nom dans le cas d'un programme
distribu sous une quelconque forme, et qu'il m'en avertisse
(simplement pour que je garde une trace de la chose).

	    Ayez drle  (have fun ;-)
