Programmation en multi-applications RedHat Linux TI89
1) Introduction
Il vous est possible de développer des applications compatibles avec le multiapplication et utilisant les possiblités du kernel. Dans cette doc je vous expliquerai comment le fair en basic (il suffit de ladapter pour la programmation en C). Il est nécessaire d'avoir de bonnes connaissances du basic.
2) Base du développement/Arguments
Le multi-tache RedHat Linux TI89 repose sur un systeme de dossier temporaires et d'arguments passés par une variable, avant l'exécution d'un processus le systeme crée un dossier dont le nom est le meme nom que le programme, cela signifie qu'il ne faut pas créer un dossier dont le nom est celui du prog pour votre prog car sinon a la fin de l'execution du processus le dossier sera supprimé. Ce dossier est le dossier courant. Il n'est pas du tout recommandé pour unb processus de changer le dossier courant surtout que les interruptions 1 et 2 ne sont pas désactivées. (si vous programmer en C ou en ASM il n'est p)as conseillé de les désactiver). La variable de type STR et de nom "arg" de ce dossier comprend l'argument passé au programme lors de la demande par l'utilisateur d'un nouveau processus à la premiere execution du programme, cet argument vaut "START", lors d'un appel au processus par l'intermédiaire de la barre des taches ou autre, cet argument vaut "CALL". Lors de l'arret du systeme, ils y a encore deux appels aux processus actifs, un avec l'argument "TERM" et un avec l'argument "KILL" ou il ne faut pas utiliser de graphismes ces argument servent au programme si il y a besoin d'enregistrer le fichiers en cours. Si il n'y a pas besoin d'enregistrer de fichier il est conseillé de ne rien exectuer lors des arguments "TERM" et "KILL". Il est de toute facon tres fortement déconseillé de faire quelque chose au "KILL" mieux vaut tout faire au "TERM". A partir du "START" et jusqu'a "KILL" ou jusqu'a la fermeture du programme, les variables contenues dans le dossier temporaires sont sauvegardées. Il esty quasiment impossible de programmer une application pour RedHat Linux TI89 sans utiliser flib, les programmes flib et flib2 sont contenus dans main, c'est la version 3.2.
3) Fonctions et sprites Linux utilisables
Pour que votre programme soit un programme RedHat Linux TI89 à part entière il faut qu'il utilise les mêmes graphismes. Il y a un fichier PIC nommé "redhat\window" qui représente une fenêtre, de la taille de l'écran. Il est conseillé d'initialiser l'écran comme ceci:
la première ligne execute le programme redhat\prs_aff qui efface l'ecran et met a jour la barre des taches avec les noms de différents processus. Si vous voulez que la barre des taches affiche autre chose que le nom de votre programme il faut récupréer le numéro de votre processus, il dans la variable "num". ensuite il faut modifier la liste "temp\prs_nom". Il faut enregistrer la chaine que vous voulez afficher dans temp\prs_nom[num] ou num correspond au numéro de votre processus. Ensuite il faut réinsitialiser l'ecran, il st conseillé de ne pas le faire souvent. Si vous voulez initialiser la barre des taches apres avoir affiché quelque chose dans la fenetre, il faut utiliser un autre programme nommé redhat\prs_aff_2(). Le programme l_bin\mouse() est le programme en C affichant la souris. Il faut qu'un sprite nommé souris soit présent dans otre répertoire temporaire. Si vous voulez la souris par défaut, il faut executer au début de votre programme avant tout appel a la souris "CopyVar redhat\souris,souris". Si vous en voulez une autre il faut que vous créiez un sprite souris dans le repertoire courant, soit en la copiant du repertoire de votre programme vers le rep courant soit vous la créer avec flib (avec pix, drawline.. et savpic). Apres l'execution du programme mouse (quand l'utilisateur a appuyé sur 2ND (clic gauche) ou sur DIAMANT (clic droit)) la variable de type NUM mr contient le numéro du clic (1 pour droit et 2 pour gauche). Les variables temp\x et temp\y contiennent les valeurs x et y du curseur (x correspond a l'horizontal et y au vertical). Ces trois variables ne doivent PAS être modifiées. Vous pouvez utiliser les fonctions du kernel Linux TI89 en executant linux\kernel("fonction"). Voire la doc du kernel pour plus d'informations.
redhat\prs_aff()
main\flib("sprite:0,0,4,redhat\window")
4) Renvoi de valeurs au système
Pour permettre que le systeme soit multiapplications il faut permettre le retour au systeme pour changer de fenetre. Tout le systeme de changement passe par la variable ret de votre dossier courant. Il faut mettre a jour sa valeur avant d'executer Return ATTENTION:Ne JAMAIS utiliser l'instruction stop toujours return La variable ret par défaut vaut -1. Table des valeurs possibles:
Toutes ces fonctions sont utilisables et simplifiées en LAPPS (voir le fichier redhat\lapps_dc.TEXT de l'archive redhat.89g).
-1
Stoppe l'exécution du processus et supprime les variables ret er arg et le dossier s'il est vide mais pas les autre variables temp (déconseillé, ca sert pour les programmes non compatibles avec le multi-application)
0
Stoppe l'execution du processus et supprime tout le dossier temporaire et tout ce qu'il contient grace à l'instruction "mrd" du kernel
1/2/3 ou 4
Garde en mémoire les variables et lance le processus de ce numéro, s'il n'existe pas, retourne sur le bureau, si c'est le numéro de votre processus, le relance.
5
Garde en mémoire les variables et va dans le bureau puis dans le menu RedHat
6
Garde en mémoire les variables et va dans le bureau