"C'est un bogue de AMS"
Vite dit. Je pencherais plutôt pour une limitation volontaire made in TI, ou à la limite qqch non implémenté. En tout cas qd on voit le code de démarrage d'un prog ASM on voit qu'ils ont pensé au pb.
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
je confirme le gros pavé de pollux est incompréhensible :/
TU peut pas faire un poil plus clair stp ?

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.
Nil Le 30/09/2003 à 17:26 Ouf, ça vient pas de moi... sérieux, c'est un peu... confus.
Ben j'avais pas envie de rentrer trop dans les détails mais bon... En gros :
- lorsque la TI lance un prog archivé, elle crée un twin et active un flag 'twins_to_cleanup', pour signaler à l'event loop de nettoyer les twins qui ne sont pas 'in use' la prochaine fois qu'elle s'exécutera.
- donc tant que l'event loop n'est pas lancée, le twin n'est pas supprimé. Intéret : un prog en Basic qui utilise flib à chaque instruction n'a pas besoin de recopier le prog en RAM à chaque fois, meme s'il est archivé.
- problème : si un prog ASM lance l'event loop, gros problème : elle va supprimer le twin => crash
- d'où le fix "quick & dirty" de TIGCC qui active le flag "in use" du programme comme ça l'event loop ne le supprime pas, mais il y a un problème : twins_to_cleanup est remis à 0 par l'event loop, d'où un mémory leak jusqu'à la prochaine exécution d'un prog archivé qui, elle réactivera twins_to_cleanup
- heureusement, TI a été gentil et a rajouté une autre détection pour réactiver twins_to_cleanup ; mais il y a _toujours_ un problème : cette détection suppose que le HSym du programme reste constant, ce qui est complètement faux si le programme crée / supprime des fichiers.
Ce qui m'amène à penser que ce n'est pas un bug de la part de TI, mais plutot une omission plus ou moins volontaire, autrement dit : TI ne supporte probablement pas officiellement l'utilisation des boites de dialogues dans les progs ASM (c'est meme écrit noir sur blanc dans leur doc que les programmes RAM ne peuvent pas utiliser les événements et que c'est spécifique aux flashapps).
Mais s'ils avaient voulu réellement implémenter ça, il aurait suffi de rajouter une fonction SetFileInUseBit() au début du programme et une fonction EnableTwinsCleanup() à la fin. Autrement dit, propagande en faveur des FlashApps (comme la limite des 24k) ?
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
Ok, c'est un peu se qeu j'avais compris
oui on pourrait pencher sur ton point de vu effectivement,

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.
Nil Le 02/10/2003 à 08:27 Tu sais, vu le nombre de leaks qu'on peut trouver sur la TI 68k, c'est peut-être simplement qu'ils avaient la flemme ou qu'ils n'y ont pas pensé... sinon, ils ont vraiment l'esprit prevers.
PpHd Le 02/10/2003 à 09:26 Je crois plutot que c'est parce qu'il est possible que le programme asm ajoute des fichiers a la VAT, et qeu donc la HSym est modifie, et comme ils sont incapables de retourver le fichier, ils doivent tout scanner. Comme c'est lent, ils le font dasn l'event-loop.
Pas plus complique que ca, mon avis est.
Pollux, si tu nous donnes un moyen de trouver l'adresse de twins_to_cleanup (il faudra probablement un hack), je veux bien mettre quelques lignes de code pour la remettre à 1 à la fin dans les programmes utilisant SET_FILE_IN_USE_BIT.
PpHd Le 02/10/2003 à 09:33 Tu prends l'adresse de retour. Tu parcours un peu pour rechercher DerefSym (Soit par un bsr.w ou par un jsr).
Tu lis l'adresse qui se trouve quelques octets plus loin. Si tu trouves rien sur une taille raisonnable (256 octets ?), on ne fait rien.
PpHd Le 02/10/2003 à 16:13 Mais non tu verifies que tu es bien dans la rom.
Oui, mais ça n'empêche qu'il y a tjs un risque de leak. Et surtout, le fait d'activer une variable globale TIOS à 1 ne veut pas forcément dire que c'est cette variable là qui est concernée (surtout si TI change la manière de gérer les twins...).
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)