Le but de ce chapitre est de vous expliquer les différences notoires qui existent entre les programmes de type "Nostub", comme ceux que nous avons fait jusqu'à présent, et les programmes de type "Doors"
I:\ Définitions :
Un programme "nostub" est un programme qui ne nécessite aucun "kernel" (noyau, en français) pour fonctionner. Cela signifie, plus clairement, que, pour utiliser ce type de programmes, il n'est pas utile d'avoir un programme tel que DoorsOS, UniversalOS, ou en TeOS installé sur sa calculatrice.
Un programme de type "Doors" est exactement le contraire : il a besoin d'un kernel installé pour fonctionner. (Attention, pour des raisons de compatibilité, il est généralement bon d'avoir la dernière version du kernel si vous utilisez la dernière version de la ROM flash !). Actuellement, le meilleur est UniversalOS1.30 : c'est le seul qui soit encore mis à jour, et c'est le seul à être totalement compatible avec la ROM2.05
II:\ Avantages et inconvénients :
1: Les
programmes de type nostub sont généralement plus polyvalent que ceux
de type Doors. En effet, ils sont utilisables par tout le monde. Imaginons par
exemple que vous vouliez faire un programme qui serait inutile pour les
programmeurs en C ou en ASM, mais qui apporterait de nouvelles
fonctions aux programmeurs en TI-BASIC (comme Flib, par
exemple, que vous avez peut-être déjà utilisé en TI-BASIC, et qui est
écrit en C). Dans ce cas, il sera peut-être bon de faire un programme
qui ne nécessite pas de Kernel. (Certains programmeurs en TI-BASIC ont
une peur bleue des programmes noté "ASM" dans leur menu
"VAR-LINK" et refusent totalement d'installer un Kernel, croyant sans
doute que celui-ci est à la base de nombreux plantages... Alors que, au
contraire, les Kernels ont tendance à empêcher certaines erreurs et plantages
!
Les programmes que nous avons utilisés comme exemples
jusqu'à présent étaient de type Nostub. Cela pour plusieurs raison, dont la
principale est sans doute celle évoquée ci-dessus.
Les programmes nostub ont deux inconvénients majeurs :
2: Les
programmes de type Doors ont pour premier avantage de prendre, en
général, moins de mémoire que leurs équivalent de type Nostub. Ils
permettent aussi d'utiliser les librairies des kernels : à partir d'un
programme utilisant le mode Doors, il vous sera possible d'exploiter, par
exemple, les capacités de compression et de décompression de Ziplib. (Une
fonction concernant ZipLib est donnée dans la FAQ de TIGCC, mais ce n'est pas
celle qui sert à compresser et décompresser des variables de la TI. Nous
verrons donc dans la FAQ de ce tutorial comment faire.).
Le second avantage de ce type de programmes est le fait
qu'ils acceptent un "commentaire général". Pour vous donner une
idée de ce que c'est, prenons l'exemple qui suit : vous avez sans aucun doute
déjà programmé en TI-BASIC. Dans ce cas, vous savez peut-être que vous
pouvez inclure, au début de ce type de programmes, une ligne telle "©Ceci
est un commentaire". Cette phrase apparaît alors dans le CATALOG, comme
aide (Pour les ROM 2.03 et plus !). Eh bien, le mode Doors vous permet de faire
la même chose pour vos programmes en C, mais, cette fois, c'est dans un
explorer comme Doors-Explorer, ou PCT que vous verrez le commentaire. Essayez,
je suis sûr que vous avez déjà des programmes dotés de commentaires qui
traînent sur votre TI.
Les programmes de type Doors ont, eux aussi, deux inconvénients :
III:\ Création :
A: Programme en mode nostub :
Les programmes que nous avons jusqu'à présent utilisés dans nos exemples étaient de type nostub. Comme vous avez pu le remarquer, il n'y avait aucun instruction de type declare(nostub). Cela est du au fait que cette commande n'existe pas. En effet, le compilateur de TIGCC crée par défaut des programmes de type Nostub.
B: Programme en mode Doors :
* Pour faire un programme en mode Doors, il faut dire au
compilateur qu'il devra créer un exécutable de ce type. Pour cela, il faut
rajouter une commande au début du programme :
#define USE_KERNEL
* Pour définir le
commentaire général du programme, il faut inclure la ligne de commande
suivante...
char _comment[]
= "Votre commentaire";
...dans le programme, par exemple après avoir
déclaré pour quelle calculatrice devait être compilé le programme.
* Enfin, les programmes de type Doors peuvent avoir un point de sortie, qui sera une fonction nommée "_exit", et qui sera exécutée après la fin du programme, d'après la doc de TIGCC.
Copyright Squale92 & Verstand. Logo et sigle TCI® réservés. Développé pour MS Internet Explorer 5.0 en 1024x768 pixels. Page modifiée le