********************************************************




par François LEIBER

http://leiber.free.fr


Description


Librairie programmée en C et destinée aux programmeurs basic, incluant de nombreuses fonctions, des plus simples aux plus avancées, ne nécessitant pas de kernel installé et fonctionnant sous toutes les ROM et hardwares.


Version 3.2, 02 / 04 / 2004
Copyright 2000-2004 par François LEIBER

Ce programme est distribué sous la licence GPL, reportez-vous au fichier GPL.txt ou à http://www.gnu.org/licenses/licenses.fr.html#GPL pour en savoir plus.
Si jamais vous utilisez ma librairie dans un programme BASIC que vous distribuez, merci de mentionner mon nom dans le readme, cela me ferait plaisir !

Sommaire


    1. Nécessite
    2. Utilisation
    3. Historique
    4. Bugs connus
    5. Remerciements
    6. Infos

Nécessite

  • Une Ti-89, une TI-92+ ou une Voyager 200, avec n'importe quelle ROM ou hardware, pas besoin de kernel installé.

  • Les programme flib() et flib2(), 15.0 Ko en tout.

  • Quelques octets de libre pour pouvoir les lancer.

Vous pouvez mettre les deux programmes dans n'importe quel répertoire (tout le monde devrait les laisser dans 'main' ; ça éviterait d'en avoir des copies dans 15 répertoires différents, quitte à en faire une copie temporaire au démarrage d'un programme), et je vous conseille fortement de les archiver.

Utilisation

Il suffit, dans un programme BASIC en général, de taper
flib("command1" [,"command2",...])

exemple : flib("clrscr","msg:Hello, World !", "slrcl")

Si vous utilisez des fonctions de flib2, alors :

exemple : flib2("version","mkhs:10,500,fl,sc","hide:sc")

La liste renvoyée par Flib est stockée dans la variable 'fl'.

Chaque commande est une chaîne de caractères, lisez le fichier Fonctions Flib pour connaître les différentes fonctions disponibles.

Historique

v3.2 GPL - 02/04/04 - 7 783 + 7 883 octets
  • Maintenant sous licence GPL !
  • Compilation avec TI-GCC 0.95b6.


v3.2 - 04/09/03 - 7 071 + 7 681 octets

  • Compilation avec TI-GCC 0.94SP4 + GCC 3.3.1, et tests avec la calculatrice Voyager 200 !
  • On peut maintenant ajouter un fichier à une variable GROUP.
  • Ajout de NO_CALC_DETECT et NO_AMS_CHECK pour gagner de la place (150 octets environ dans chaque librairie).
  • Plusieurs autres optimisations mineures.
  • Correction d'un bug dans 'ginfo' quand une des variables du groupe faisait plus de 32 Ko (merci à Soulon).
  • Quelques modifications supplémentaires pour tenter de stabiliser les compressions/décompressions successives (merci à Soulon pour ses tests).
  • Désactivation du 'breakoff' avant les 'map' qui bouclent pour éviter qu'on ne puisse en sortir (merci à AARRR).
  • Redesign des pages html de la documentation, en plus elles sont maintenant plus petites.


v3.1 - 05/12/01 - 8069 + 7 893 octets

  • Nouvelles fonctions 'type', 'ginfo' et 'pinfo'.
  • Mon école !Possibilité d'extraire les fichiers un par un des variables GRP.
  • La fonction 'hide' replie un dossier avant de le cacher, pour être sûr que ses fonctions soient aussi cachées.
  • Quelques protections en plus pour les fonctions 'komp', 'group' et les variables locales, ça ne devrait plus planter.
  • J'ai reprogrammé moi-même les parties assembleur de Flib.
  • Compilation en -Os (pour gagner de la place) avec TI-GCC 0.92 SP2.
  • Quelques corrections et optimisations supplémentaires.


v3.0 - 05/05/01 - 7 981 + 8 089 octets

  • J'ai refait la gestion des arguments : vous pouvez maintenant non seulement mettre des nombres, mais aussi des noms de variables, des expressions mathématiques, bref tout ce qui renvoie un nombre... Bref, plus de 'string()' !
  • Correction de tout ce qui concernait les variables locales, les changements de répertoire entre autres.
  • Nouvelles fonctions 'beep' et 'beep2' pour faire du son !
  • Nouvelles fonctions 'gray2', 'pretty' et 'memcpy'.
  • Un invraisemblable nombre de corrections, surtout pour essayer d'empêcher les fonctions comme 'komp', 'insertline' ou 'group' de Flib2 de planter.
  • 'getfile' ne renvoie plus les variables twin, i.e. temporaires.
  • Plus de problèmes avec certaines touches dans 'menu'.
  • Flib2 alloue moins de mémoire de manière statique, presque plus de limitation pour la récursion.
  • Attention, 'dekomp' et 'komp' sont fusionnés maintenant !


Version Anniversaire - 12/03/01 - 6 613 + 7 597 octets

  • Le mot d'ordre de cette version est : stabilité. A part ça, je pense qu'il n'y a plus aucun moyen de faire planter votre calculatrice avec Flib, j'ai rajouté des protections absolument partout, et apporté en plus pas mal de petites corrections.
  • Rajout des fonctions 'delline', 'insertline', 'mkvar' et 'group' dans Flib2.
  • Optimisation poussée (mais pas encore tout à fait finie).
  • Un nouvel exemple avec des images de TATMF pour l'anniversaire de Flib.
  • Plusieurs nouveaux exemples et utilitaires, à découvrir dans leurs répertoires respectifs, et réécriture de la plupart des anciens.
  • Compilation avec la nouvelle bêta de TI-GCC.
  • Attention : j'ai fusionné 'komp' et 'dekomp', qui détecte maintenant automatiquement ce qu'il faut faire, dans un soucis de simplicité et pour gagner de la place. 'dekomp' fonctionne toujours, mais sera définitivement supprimé dans la prochaine version.
  • Comme le temps m'a quand même manqué pour faire tout ce que je voulais, une version suivra dans un temps raisonnable, avec : plus aucun problème avec les changements de répertoire, finalisation des optimisations, et enfin je vous promets de vous débarasser de tous les 'string()'...


v2.31 - 27/02/01 - 6 781 + 6 243 octets

  • La version 2.3 s'étant révélée relativement buggée à l'usage, j'ai dû me remettre au travail. Cette version ne fait donc principalement que corriger les manques de la version précédente :-(
  • Plus de problème pour afficher des images sur la droite de l'écran.
  • Plus de problème avec les variables archivées et les locales.
  • Protection contre les noms de variables trop longs (mais mieux vaut toujours éviter).
  • J'ai adapté les optimisations de Flib à Flib2.
  • J'ai mis le source (très propre d'après moi) de cette version sur mon site.


v2.3 - 20/02/01 - 6 707 + 6 325 octets

  • Rajout de la fonction 'gray2', et compilation avec les nouveaux niveaux de gris, enfin vraiment stables avec les HW2.
  • Nouvel algorithme pour la compression/décompression beaucoup plus performant, et correction de tous les problèmes liés à ces deux fonctions : c'est le TIOS qui faisait tout foirer en lançant sa procédure de compression du tas. Merci à Thomas Nussbaumer pour m'avoir mis sur la voie. Attention, ce nouveau format n'est plus compatible avec l'ancien !
  • Possibilité d'écrire sur plusieurs lignes avec la fonction 'msg'.
  • Modification de la fonction 'map' pour qu'elle puisse servir de CyclePic évolué.
  • Plus de problème quand on essaie de cacher/décacher une variable inexistante avec un nom long.
  • Correction de quelques gestions d'arguments par défaut.
  • Plus de protections pour 'sprite' et 'map', implantables maintenant.
  • 'wait' ne plante plus quand placé après 'breakoff', et est maintenant étalonné pour les HW2.
  • Correction de 'setcont'.
  • Correction de 'mkpic', le code '13' ne marchait pas.
  • Encore optimisé et réduit la taille des deux librairies.


v2.2 - 16/11/00 - 6 045 + 6 469 octets

  • Nouvelles fonctions de compression/décompression de variables : 'komp', 'dekomp' et 'kinfo'.
  • Nouvelles fonctions de gestion de texte : 'numline' et 'getline'.
  • J'ai reculé la limite de taille pour la variable de sortie (à 5 Ko).
  • Plus de problèmes avec les variables archivées.
  • Plus de problème si 'fl' est déclarée en local dans les fonctions comme 'getfile'.
  • Plus de plantage avec les high-scores avec un seul record.
  • Plus de plantage avec 'wait:0'.
  • Correction d'un mini-bug dans 'menu'.
  • Encore plus d'optimisations.
  • Nouveaux exemples : 'Memory' et 'FlKomp'.
  • J'ai joint un code source en C permettant de créer facilement vos images pour Flib en niveaux de gris.


v2.1 - 02/10/00 - 6 359 + 4 263 octets

  • Nouvelles fonctions permettant l'utilisation de niveaux de gris statiques. J'ai compilé le programme avec la nouvelle version 2.2 des librairies de Juric, les niveaux de gris ne *devraient* donc pas clignoter sur HW2.
  • Nouvelles fonctions de contraste : 'getcont' et 'setcont'.
  • 'wait' ne dépend maintenant plus de la calculatrice, la fonction utilise maintenant des timers.
  • J'ai mis à jour les exemples.


v2.0 - 23/08/00 - 5 749 + 4 467 octets

  • Ca y est, j'ai divisé Flib en deux librairies : une pour les maniements de fichiers ou fonctions plus du type 'OS', et l'autre pour le reste.
    Merci de porter vos programmes pour cette nouvelle version, il suffit de rajouter un '2' après 'flib' quand vous appelez les fonctions de la deuxième librairie (reportez-vous aux fichier Fonctions Flib).
  • Une nouvelle fonction évoluée : 'map', ainsi que 'drawstrv'.
  • 'mkpic' marche maintenant avec tous les caractères.
  • J'ai traduit toute la documentation en html.


v1.8 - 25/07/00 - 8 057 octets

  • Enfin ! Flib supporte les variables locales, il m'a fallut une pleine après-midi pour m'en sortir :(
  • Les fonctions 'hide', 'unhide' et 'state' fonctionnent aussi avec les dossiers.
  • La fonction 'drawstr' admet maintenant un argument permettant de centrer une chaîne de caractères sur l'écran.
  • Une nouvelle fonction : 'pixtest'.
  • Attention à la compatibilité de vos programmes : j'ai supprimé les fonctions 'blink' et 'crypt', qui posait trop de problèmes.
  • Corrigé un bug dans fillrect qui ralentissait considérablement l'affichage quand il n'y avait pas de dernier argument.
  • Corrigé un autre bug : quand Flib renvoyait un '0', le test 'fl[1] = 0' renvoyait 'false'.
  • Correction d'un troisième petit bug, qui a peut-être pu poser des problème avant.


v1.7 - 29/05/00 - 8 065 octets

  • Ajout des fonctions 'folder' ainsi que des trois pour gérer des highscores : les 8 Ko qui m'étaient alloués sont remplis, Flib v2 sera en deux programmes ou ne sera pas...
  • J'ai tout relu et réécrit pas mal de petites choses pour optimiser au maximum.
  • J'ai inclus un programme pour se servir de la fonction 'mkpic', ainsi qu'un exemple avec Othello, que j'ai enfin traduit pour Flib.
  • La fonction 'crypt' marche beaucoup mieux.
  • Si personne ne m'écris pour les garder, je vais supprimer les fonctions 'wait', 'reset' et 'blink'.


v1.6 - 12/05/00 - 7 001 octets

  • Ajout des fonctions 'crypt', 'wait', 'mkpic', 'width' et 'blink', ce qui porte à 46 le nombre de fonctions de base de Flib !
  • Importante amélioration : Flib tronque automatiquement les nombres avec des décimales, plus besoin de rajouter partout des 'exact(int())'.
  • Correction de 'keylow' pour la 92+.
  • Petits ajouts à quelques fonctions :
  • 'msg' rafraîchit automatiquement l'écran quand l'utilisateur a appuyé sur une touche.
  • 'getbyte' peut maintenant renvoyer plusieurs octets en une seule passe.
  • 'apd', 'init' et 'initdelay' renvoient les valeurs enregistrées précédemment.
  • Je fournis maintenant l'aide en format Txtrider.
  • J'ai commencé à faire une fonction de compression, mais ça va être chaud à faire tenir dans 1 Ko...


v1.5 - 19/04/00 - 5 987 octets

  • Ajout des fonctions 'menu', 'filltri', 'fillpoly' et 'reset' : je sais, celle-ci n'est pas la plus utile, mais c'est en tout cas la plus marrante :)
  • J'ai supprimé la fonction 'idcode', je n'avais pas remarqué qu'on pouvait l'avoir avec getConfg().
  • La fonction 'breakoff' est maintenant plus puissante, elle n'est plus annulée par des fonctions du genre 'string()'.
  • On peut maintenant se servir d'arguments plus grands que 999 pour les fonctions, c'était gênant pour 'getbyte' et 'setbyte'.
  • Lorsque la valeur renvoyée ne dépasse pas 9, ne renvoie plus '09' comme avant, ce qui pouvait poser des problèmes (du genre 159 - 16 = 65393).
  • La fonction 'error' affiche maintenant le message d'erreur correspondant, et ne quitte pas le programme, en fait elle ne servait à rien avant.
  • La plupart des fonctions graphiques peuvent avoir des arguments par défaut, c'est vraiment plus agréable.
  • Maintenant, les fonction du genre 'sprite' ne plantent plus quand leurs arguments ne sont pas des nombres.


v1.41 - 11/04/00 - 5 147 octets

  • C'est bête, j'aurai dû inclure cette modification dans la version 1.4, mais j'avais un peu la flemme : maintenant la liste renvoyée contient les éléments dans le bon ordre, c'est surtout agréable pour les fonctions du genre 'getfile'.


v1.4 - 10/04/00 - 5 107 octets

  • Plusieurs personnes m'ont fait remarquer qu'il était impossible de récupérer la liste renvoyée par Flib lorsque la ROM 2.xx était installée, maintenant Flib place de nouveau la liste dans la variable 'fl'. C'est moins élégant je trouve, mais en fait je n'ai quasiment pas perdu de place.


v1.3 - 08/04/00 - 5 029 octets

  • Rajout des fonctions 'savpic', 'picsize', 'getbyte', 'setbyte' et 'idcode'.
  • Avant, les arguments ne pouvaient dépasser 255, ce qui fait que l'on ne pouvait pas réinitialiser l'apd, ceci est corrigé.


v1.2 - 04/04/00 - 4 303 octets

  • Rajout des fonctions 'getfile', 'getfolder', 'size', 'state' et 'version'.
  • Flib renvoie maintenant directement une liste, et n'a pas besoin de passer par une variable externe (ex-fl), ce qui simplifie beaucoup la syntaxe.
  • Les fonctions 'sprite' et 'rclscr' font un test pour savoir si la variable passée est bien une image, sinon ça risquait de planter.
  • Les autres fonctions graphiques sont aussi protégées contre le arguments erronés, Flib ne devrait plus provoquer d'erreur maintenant.


v1.1 - 21/03/00 - 3 667 octets

  • Rajout des fonctions 'apd', 'error', 'sprite', 'savscr', 'rclscr', 'slclr', et des 4 fonctions touche.
  • Correction de 'breakoff', 'drawstr' (ne pouvait afficher des messages commençant par un chiffre).
  • Ajout de protections (pour le nbre d'arguments, vérifie que 'fl' n'est pas archivé...)
  • Deux petits exemples (flpass et flowkey) sont inclus, ainsi qu'un programme permettant de créer un menu custom pour simplifier l'utilisation de flib.
  • Version pour la 92+ incluse, j'ai même traduit les programmes d'exemple !
  • Traduction en anglais (quelle galère !)


v1.0 - 12/03/00 - 2 153 octets

  • Première version, la majorité des fonctions les plus usuelles (17) qui n'ont pas besoin de renvoyer de données sont présentes.


Bugs connus

Il n'est pas censé y en avoir, cependant :
  • Il peut y avoir des problèmes quand vous utilisez Flib dans des boucles Try...EndTry, le TIOS gérant ça un peu n'importe comment. Mais ne vous inquiétez pas, ça ne fera jamais planter votre calculatrice !

  • Vous pouvez faire planter Flib en dessinant avec 'drawstr' tout en bas de l'écran une longue chaîne de caractère qui dépassera dans la mémoire après la mémoire vidéo. Mais bon, il faut vraiment le faire exprès...

A propos, comme précisé dans la licence GPL, je ne suis absolument pas responsable de toutes les bêtises que vous pourrez faire sur votre calculatrice avec ces librairies, je ne fournis pas la moindre garantie concernant leur innocuité...

Remerciements

  • Tout d'abord, une mention spéciale à Alban Gervaise, premier programmeur de Basiclib, bien qu'il ait disparu de la circulation depuis...

  • Un immense merci à toute l'équipe TI-GCC, et en particulier Zeljko Juric pour ses librairies et sa documentation très complète des fonctions du TIOS, sans lequel tout ceci n'aurait absolument pas été possible.

  • Rusty Wagner pour Virtual Ti.

  • Alexandre qui a converti la documentation pour Textrider.

  • TATMF <tatmf.free.fr> pour ses différentes images.

  • Tous ceux qui m'ont écrit pour me donner des idées intéressantes, qui ont permis l'amélioration de cette librairie !


Infos

Pour toute suggestion, commentaire ou découverte d'erreurs non prévues (ce qui paraît incroyable ;-) ), vous pouvez me joindre à :

Francois.leiber@laposte.net

Toute idée sera la bienvenue !

Toutes les mises à jour de mes programmes sont disponibles en avant-première sur mon site

http://leiber.free.fr

J'ai une page consacrée aux programmes BASIC faits avec Flib, n'hésitez pas à m'envoyer vos productions lorqu'elles sont achevées, propres et documentées !

J'encourage chaleureusement tous ceux qui voudraient se mettre au C mais qui hésitent, et c'est pourquoi la librairie Flib est open-source !
Elle est en effet fournie sous licence GPL, ce qui signifie entre autres que vous avez le droit de la modifier et de la distribuer une fois modifiée, du moment que vous respectez les clauses de la licence (fournie avec le programme).
Cependant, la vocation de Flib étant d'être une librairie universelle, ne distribuez quand même pas les versions modifiées de manière trop anarchique, ce qui nuierait à la compatibilité des programmes. Par contre, vous pouvez toujours me demander d'inclure vos améliorations/ajouts dans la version "officielle" de Flib, pour que tout le monde puisse en profiter :)

Retour au sommet de la page