21Fermer23
ThibautLe 27/09/2009 à 16:24
Frustré de ne pas avoir accès aux quelques caractéristiques POSIX de PedroM, je me suis mis à coder une sorte de couche d'abstraction pour les programmes classiques tournant sur AMS.

getchar, getc, gets auront un comportement plus confortable pour l'utilisateur (simulation d'une saisie classique sur PC avec curseur déplaçable).
=> à terminer

main est défini et devient la fonction mère du programme. Le programmeur commence donc son programme par int main (int argc, char *argv[]) conformément à la norme.
Les paramètres que le programmeur récupère dans le main sont ceux que l'utilisateur a passé dans la commande de l'écran HOME. Ils sont adaptés pour coller au comportement standard d'un OS POSIX : chaque espace dans la ligne de commande indique un nouveau paramètre, sauf s'il est précédé d'un [b][/b]. Les paramètres peuvent être passés exactement comme sur PC ( ex : programme("-f -R dossier 325") ) ou selon la convention d'AMS, ou les deux ( ex : programme("-f", "-R", "dossier", 325) ).
La valeur de retour du main est bien un entier et est affichée comme résultat dans l'écran Home. Les codes d'erreurs sont ceux de POSIX.
=> terminé

exit est modifiée en conséquence, pour ne plus afficher de message mais pour retourner le code d'erreur au Home.
=> terminé

Divers : l'écran est mis au propre avant l'exécution du programme et est restauré à la sortie. Cela évite au programmeur de faire ces manips qui n'ont pas de sens sur PC.
=>terminé


Ces points permettront aux débutants de programmer sur TI comme s'ils étaient sur PC. J'aimerais bien faire quelque chose de propre : est-ce que quelqu'un sait comment faire un header précompilé pour GTC ? Sinon il suffit d'inclure le .h (marche aussi bien avec TIGCC qu'avec GTC, mais bon c'est cracra).




]); } while (!kbhit()); return 0; }
Exemple de programme utilisant ma petite couche d'abstraction :#include <stdio.h>


int main(int argc, char *argv[])
{
    int i;
    
    printf("Le programme a %d arguments :\n", argc-1);
    
    for (i=1 ; i<argc ; i++) {
        printf("%s\n", argv[i