1

slt! je débute ds les ti alors aidez moi svp!!!

Comme on ne fait que du C dans ma nouvelle formation, j'ai ressorti ma TI pour coder vite fait les algos et bouts de programmes qu'on nous donne en TD. Merci Pollux pour ton bel outil smile
Je crois que je serais plus productif dans un environnement comme PedROM, avec toutes ses commandes de type UNIX. Mais :

Est-ce que GTC fonctionne sur PedROM ? (l'IDE et la FlashAPP)

Est-ce que la sortie texte des programmes se fait par défaut sur la console, comme sur un vrai ordi ? (ce qui éviterait la sauvegarde, l'effacement puis la restauration de l'écran dans les programmes)
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

2

1. Je ne crois pas que PedRom gère les flashapps.
2. Oui, stdout affiche sur la console par défaut.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

3

!call kevin kolfer


grin
avatar
納 豆パワー!
I becamed a natto!!!1!one!

4

PedroM ne gère pas les FlashApps.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

5

OK, ça n'a pas changé sad

Il y a beaucoup de choses à modifier dans la source d'une FlashApp pour en faire un programme ASM ordinaire ? Est-ce que PedROM exécute par défaut les programmes depuis la ROM ?
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

6

Il y a beaucoup de choses à modifier dans la source d'une FlashApp pour en faire un programme ASM ordinaire ?

Dans le cas de GTC, pas sûr smile
Il me semble en effet que GTC n'utilise qu'un assez petit sous-ensemble de ce que supporte le système de FlashApps d'AMS.
Est-ce que PedROM exécute par défaut les programmes en ROM ?

A moins qu'ils soient fait exprès pour et déclarés comme tels (ce qui serait le cas des FlashApps), non.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

7

Sasume : Merci pour la bonne nouvelle ! Ta machine est sous PedROM peut-être ? C'est agréable ?
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

8

Non il me semble que ma machine est sous AMS. Cependant, je ne l’ai pas sous la main là elle doit être approximativement à 300 km de moi.

En revanche, je crois que Folco utilise PedroM de temps en temps wink
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

9

PedroM permet les fichiers de plus de 64 KO et il y a un moyen d'exécuter du code en archive, donc en principe on pourrait faire une version de GTC pour PedroM qui s'exécute en FlashROM avec cette méthode.
!call Folco
--- Call : Folco appelé(e) sur ce topic ...
^-- le spécialiste wink

Cela dit, le problème est que PedroM ne gère pas les relogements en FlashROM contrairement au système de FlashApps de TI, donc il faut faire en sorte d'éliminer tous les relogements dans le code de GTC (ce qui n'est pas évident parce que c'est du C).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

10

Thibaut (./1) :
Est-ce que GTC fonctionne sur PedROM ? (l'IDE et la FlashAPP)

Pollux avait une version de GTC pour PedroM, mais il ne l'a pas distribué pour des problèmes de licence.
Thibaut (./1) :
Est-ce que la sortie texte des programmes se fait par défaut sur la console, comme sur un vrai ordi ? (ce qui éviterait la sauvegarde, l'effacement puis la restauration de l'écran dans les programmes)

Ca dépend si ton programme utilise les fonctions spéciales de PedroM (dans ce cas oui), ou pas.
Thibaut (./5) :
Il y a beaucoup de choses à modifier dans la source d'une FlashApp pour en faire un programme ASM ordinaire ?

En général, oui.
Dans ce cas là, surement pas.
Thibaut (./5) :
Est-ce que PedROM exécute par défaut les programmes depuis la ROM ?

Pas défaut, non. Mais on peut lui demander de le faire (dans ce cas le programme ne doit avoir AUCUN relogement).
Thibaut (./7) :
Ta machine est sous PedROM peut-être ?

La mienne oui, depuis des années smile
Thibaut (./7) :
C'est agréable ?

Sous 92+, ca va. Sous 89, beaucoup moins wink
Kevin Kofler (./9) :
PedroM permet les fichiers de plus de 64 KO

Non. Seulement les handles de plus de 64Ko.
Il faut découper GTC en librairies de code flash non relogeables et faire un loader allouant le global frame pointer pour les données + link avec les librairies.
Techniquement parlant le problème est plus dans la chaine d'outils.

11

Ah ouai... ben tant pis grin
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

12

En attendant d'avoir le plaisir d'utiliser GTC sur PedroM le jour où ce sera possible, j'ai contourné l'obligation de sauvegarder/effacer/restaurer l'écran en créant 3 fichiers dans le répertoire gtchdr de la calculatrice :


fichier STDIO#include <likeonpc.h>

fichier STDLIB#include <likeonpc.h>

fichier LIKEONPC
#ifndef _LIKEONPC
  #define _LIKEONPC
  
  #define SAVE_SCREEN
  #include <std.h>
  
  void main();
  
  void _main() {
    clrscr();
    main();
  }
#endif



C'est un peu crassou mais ça permet de programmer comme sur PC, sans devoir écrire les lignes spécifiques à TIGCC :


fichier TEST
#include <stdio.h>

void main() {
  printf("Hello world !");
}
... tout simplement. Les manips pour l'écran sont désormais générées automatiquement. Ce sont surtout elles qui m'embêtaient.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

13

PpHd (./10) :
Pollux avait une version de GTC pour PedroM, mais il ne l'a pas distribué pour des problèmes de licence.

Le problème, c'était que GTC était intégré directement à la mise à jour de PedroM dans cette version, donc problème de licence car PedroM est sous GPL et la licence de GTC n'est pas compatible avec la GPL.
En général, oui.Dans ce cas là, surement pas.

Mais ça va consommer beaucoup de RAM, sauf si on utilise l'exécution en ROM style Folco avec ton flag _readonly, mais du coup:
(dans ce cas le programme ne doit avoir AUCUN relogement).

voilà le problème.
Techniquement parlant le problème est plus dans la chaine d'outils.

Pfff, c'est clair, on va demander à TIGCC de faire le travail de l'OS. roll C'est n'importe quoi, AMS arrive bien à reloger une FlashApp et à gérer les FlashApps de plus de 64 KO, pourquoi pas PedroM?
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

14

Kevin Kofler (./13) :

Pfff, c'est clair, on va demander à TIGCC de faire le travail de l'OS. roll.gif


Non, j'ai bien compris que tigcc ne le ferra pas.

15

Donc tu demandes à GCC4TI de faire ton travail? Ou GTC? Ou encore une bidouille dans ton MakePrgm que personne à part toi n'utilise parce que ce n'est même pas un vrai linker? Pourquoi pas faire ce travail dans le système d'exploitation où il a sa place? N'est-ce pas toi qui n'arrête pas de gueuler sur le code de démarrage de TIGCCLIB qui "fait le boulot du kernel"? Pourquoi ici ce serait le boulot de la chaîne d'outils?

Je veux bien gérer un format de FlashApps pour PedroM dans TIGCC (ce qui n'exclut pas de gérer aussi celui de AMS!), mais il a intérêt d'être spécifié convenablement et de gérer les fonctionnalités dont on a besoin (relogements, pas de limite de taille, AMS y arrive bien!). L'idéal étant évidemment de gérer le format de AMS, il est déjà spécifié et ça permettrait aux chaînes d'outils et aux programmeurs de gérer les 2 OS en même temps. Mais ça nécessiterait plus de changements au niveau de PedroM, c'est clair.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

16

La même chose mais en mode amabilité & respect, ça passerait mieux.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

17

Un support minimal des FlashApps AMS dans PedroM attendra de toute façon les pré-versions de la release 0.83 au plus tôt. Là, PedroM 0.82 est en deep freeze.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

18

Sasume (./8) :
En revanche, je crois que Folco utilise PedroM de temps en temps

"Depuis des années" ©, on-calc et sur ému grin
Kevin Kofler (./9) :
^-- le spécialiste

Euh non PpHd, oui. C'est pas moi qui ait permis la techno read-only et inventé le concept du PIC, je ne suis qu'un simple user. Ce que je fais ne va pas chercher plus loin, ya pas de quoi fouetter un chat. grin
PpHd (./10) :
Il faut découper GTC en librairies de code flash non relogeables et faire un loader allouant le global frame pointer pour les données + link avec les librairies.

Tiens tiens tiens... overlay, non, c'est pas ça ? J'avais pondu du code à destination de Thibaut justement, pour faire ça, dans je ne sais plus quel topic. cheeky
Kevin Kofler (./13) :
(dans ce cas le programme ne doit avoir AUCUN relogement).
voilà le problème.

Je ne comprends pas qu'on ne puisse pas imposer à un compilateur de ne pas pondre de relogements. A moins que je sois trop habitué à l'assembleur, et qu'on ai même pas le droit de demander ce genre de choses élémentaires à un compilateur, mais ça me repousse encore plus du C. grin
Lionel Debroux (./17) :
Là, PedroM 0.82 est en deep freeze.

Tant qu'assez repoussé je crois. grin

19

Je ne comprends pas qu'on ne puisse pas imposer à un compilateur de ne pas pondre de relogements.

Certaines des causes de relogements, ne citons que les tableaux de chaînes de caractères, tiennent à la sémantique du langage C wink

TIGCC/GCC4TI implémente déjà quelques désobéissances par rapport à la sémantique du C, par exemple le merging à fond des données constantes - mais pas, par exemple, l'automatisation des tableaux de strings optimisés. Ceux-là, il faut se les coller à la main: cf. TICT Tutorial S1P6, Ice Hockey 68k, etc.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

20

Je signale que non, -fmerge-all-constants n'est pas activé par défaut. Le constant merging par défaut est entièrement conforme au standard C. En revanche, les compound literals à valeurs constantes sont présumés const par défaut et donc stockés statiquement dans le programme et mergés par le constant merging, ce qui correspond au comportement des vieux GCC, mais n'est pas conforme au standard C99, il y a un flag -fno-global-compound-literals pour forcer le comportement conforme au standard C99 (mais dans ce cas on a intérêt à corriger ses &(SCR_RECT){{0,0,239,127}} en &(const SCR_RECT){{0,0,239,127}}).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

21

Merci de la précision, mais j'ai seulement écrit que c'était implémenté, pas que c'était activé par défaut wink
Je sais très bien que ça n'est pas activé par défaut. Je l'ai mis explicitement dans la plupart des programmes de TICT.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

22

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
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

23

D'ailleurs, Lionel, ces modifs serait-elles intéressantes pour ta version de TIGCC ? Si oui, tu pourras reprendre le bazar et séparer proprement header/code. L'utilisateur entre dans le système de portabilité PC dès qu'il inclut stdio.h, mais tu pourrais choisir un autre nom d'header si tu veux garder une compatibilité maximale avec les sources TIGCC existantes (mais en cassant un peu la portabilité PC du coup).
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

24

Folco (./18) :
C'est pas moi qui ait permis la techno read-only et inventé le concept du PIC


C'est plus du XIP que du PIC. Meme si le PIC est souvent utile pour du XIPko<a href='javascript:;' onclick='getPost(event,125255,22)'>./23</a>
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

25

La bonne solution, c'est de détecter dans le linker si main est défini à la place de _main, et dans ce cas importer automatiquement un _main wrapper.

Mais certains trucs comme le changement de comportement de exit devraient être des options à part. Je vois au moins 3 stratégies de retour d'erreurs:
1. ce que exit fait actuellement: afficher un ERD_dialog, puis quitter normalement,
2. ER_throwVar,
3. retourner le exit status comme un entier (mais c'est un peu bizarre).

D'ailleurs, pour les méthodes ERD_dialog et ER_throwVar, il faudrait au moins gérer l'exit code 1 (couramment utilisé) pour une meilleure compatibilité PC. Il me semble que AMS réagit bizarrement si on l'utilise tel quel. sad

Sinon, la plus grande incompatibilité avec le C ISO est l'absence de stdin/stdout/stderr, mais implémenter ça de manière conforme prend beaucoup de place (toutes les routines d'accès aux fichiers doivent se taper aussi la version qui travaille avec l'écran, et si on veut permettre aussi les redirections de flux aussi vice-versa).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

26

Kevin : Merci pour ton avis éclairé wink Je ne m'y connais pas suffisamment pour modifier l'éditeur des liens alors j'ai choisi une méthode crade mais fonctionnelle lorsqu'il n'y a pas de compilation séparé. C'est crade parceque toutes les occurrences de main sont remplacées par m_a_i_n au préprocessing, et les macros free, gets, getc, ..., sont dé-définies et redéfinies. D'ailleurs j'avais oublié de parler de free, qui ne plante plus maintenant lorsque son argument vaut NULL.

Ce serait beaucoup moins crade et la compilation séparée deviendrait possible en hachant ce monstre en un header et une librairie statique. Après, modifier le linker, pourquoi pas, je vous laisse faire grin Si par hasard ma couche de portabilité vous intéresse, prenez le truc qui gère les arguments et la valeur de retour et faites-en ce que vous voulez. Ne vous privez pas non plus pour les nouvelles fonctions d'entrée au clavier plus conformes dans leurs fonctionnalités et leur présentation que celles d'origine. Elles, elles ne sont définitivement pas propres, mais il suffit de ne pas regarder à l'intérieur cheeky
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

27

A noter que le wrapper se charge aussi de nettoyer/restaurer l'écran avant/après l'exécution de main, pour l'habitué des PC pour qui cela n'a pas de sens. Cet automatisme te semble correct, propre, intégrable ?
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

28

Thibaut (./26) :
Kevin : Merci pour ton avis éclairé

Attends... t'es le vrai Thibaut toi ?!? #trihum#

29

grin

30

Il faudra attendre le prochain affrontement pour sortir vos pop corns cheeky
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.