90

>Vu le peu de RomCalls qu'il y aura, ta ROM ne servira pas à grand chose. (C'est ce que je dis dès le début. Je savais bien qu'il n'allait pas y avoir grand chose comme ROM_CALLs.) Désolé.

Le but est d'offir une BASE MINIMALISTE. Ensuite pourrons venir se greffer n'importe quoi, avec comme place 2Mo - 2*64K, sans aucune protection d'execution. Mais je la fais pour moi seul. Je ne la distriburais pas. Je suis sûr que des gens peteraient leur calc avec. Alors...

>Bon, il va falloir qu'on fasse la table nous-mêmes alors. Sauf si elle traîne quelque part dans ta ROM. Sinon, aucun programme en C ne pourra tourner sur ta ROM.
Mais si. Tu surestimes le nombre de reference a $C8. Et puis je m'en fous.

> aucun programme en C ne pourra tourner sous PreRom.
Tu connais le fichier kernel.h ?


>Parce que tu penses à ta PreRom là. Parce que ça ne rentre pas du tout dans la logique "utilisez toutes les fonctionnalités offertes par PreOs, et on s'en fiche des autres kernels" que tu aimes tellement défendre.
Non. Je pense encore et toujours que le seul format pour une application d'appeller une ROM_CALL est jsr tios::machin_truc.
Preos utilise le FLINE car c un kernel, voilou.

>Mais jsr tios::machin prend 6 ou dans certains cas même 10 octets de plus que dc.w $f800+machin. Et comme PreOs permet les appels F-LINE sous tous les AMS, les programmes qui de toute façon nécessitent PreOs ne vont pas tarder à l'utiliser.
Je parle de programmation propre ! Donc utiliser une table de relogement des appels systemes. Heureusement que le FLINE est quand meme plus propre que l'acces indirect.

Tu n'as pas pris en compte ExePack ici:
10 programmes utilisant les niveaux de gris de TIGCCLIB = 10 * 1 KO * 2/3 = 6,7 KO de memoire archive utilisée
Contre 5 KO de kernel + 2,5 KO de graphlib = 7,5 KO
Ou: Contre 5 KO de kernel + 2,5 KO *2/3 de graphlib + 0,6 KO de shrnklib = 7,3 KO
Ou: Contre 5 KO *2/3 de kernel + 2 KO de lanceur pour le kernel + 2,5 KO de graphlib = 7,8 KO
Ou: Contre 5 KO *2/3 de kernel + 2 KO de lanceur pour le kernel + 2,5 KO *2/3 de graphlib + 0,6 KO de shrnklib = 7,6 KO

Donc même avec 10 programmes l'utilisant, la librairie statique prend moins de place.


10 prog utilisant les niveaux de gris de TIGCCLIB = 10 * 1 KO * 2/3 = 6,7 KO de memoire archive utilisée + Lanceur 2 Ko = 8,7 Ko
Contre 5 Ko de kernel + 2,5 KO *2/3 de graphlib + 0,6 KO de shrnklib = 7,3 Ko
Et je ne compte que les niveaux de gris la dedans. Mais on pourrait rajouter les routines graphiques en lib statiques, qui ne feraient que renforcer la dominance du systeme kernel.

Oui, on peut compresser les librairies dynamiques avec le programme avec la dernière bêta de PreOs, mais avec ça, quel intérêt y a-t'il d'utiliser une librairie dynamique? La librairie statique prendra moins de place parce qu'elle ne comportera on-calc que les fonctions vraiment utilisées, pas la librairie entière.

T'es sourd ou quoi ? TON HYPOTHESE N'EST VALABLE QUE POUR UN SEUL PROGRAMME.
Des que plusieurs programmes rentrent en jeu, ton analyse s'effondre !

>Pourquoi reprogrammer une ROM s'il en existe déjà une qui marche très bien (AMS)?
Pour disposer de plus d'espace d'archives. Pour le fun. Voila.

>Tu viens d'avouer que tu es parresseux avec cette phrase.
Qui ne l'est pas ?

>Et toi, tu fais toujours des erreurs de calcul:
C'est plutot toi.

>Tu surestimes de loin la capacité de ton anti-crash. Aucun anticrash ne peut garantir que la calculatrice se trouvera en un état stable après un plantage. Le seul moyen de le garantir est un vrai reset.
Oui je suis d'accord. Et l'argument en faveur des nostub il est ou ?

>Non, tu prends la technologie la plus ancienne, celle de Fargo.
Fargo utilise une technologie BIEN SUPERIEURE a celle offerte par AMS !
La preuve : vous etes obblige de rajouter tout un systeme de patch avant d'executer le programme, et une lib statique pour combler les lacunes du format nostub d'AMS.
Alors ne dit pas que c'est a jour.

>Quand Sebastian arrêtera de mettre son véto à chaque fois que je lui propose cette décision.
Pour bientot donc, puisqu'il compte arreter le developement de tigcc.

>Quand auras-tu compris que kernel = émulation Fargo = émulation TI-92 I = vieux et que _nostub = TI-89/92+/V200 = moderne?
Et moderne veut donc dire :

pea ret(pc)
pea fonction(pc)
jmp return
ret:

return: rts ?
(Code d'une V200)

a :
jsr fonction
(Code d'une Ti-92)

Arrete de deconner, moderne est tres loin de signifier le plus recent !



>Pose-toi la question: Pourquoi ne sont-ils "censés tourner que sur AMS 1.00"?
>Réponse: parce qu'ils sont programmés de manière sale et utilisent les structures internes de AMS plutôt que les ROM_CALLs.
Et ? Ce n'est pas LEUR faute si les ROM CALLS n'etaient pas documentes a l'epoque !

>Il n'y a eu que 2 programmes en langage machine qui ont été programmés à l'époque de AMS 1, mais ont quand-même fonctionné sur HW2 AMS 2.0x dès sa sortie: CBlaster et CReversi.

> Et comme par hasard, ils sont en C _nostub. La raison:
- Ce sont des programmes _nostub qui ne dépassent pas la limite de taille, donc pas besoin de désactiver des protections de AMS.
- Ils ont été écrits avec TIGCCLIB, donc n'utilisent que les ROM_CALLs et n'accèdent pas directement aux structures internes de AMS.

Troisieme raison : ils n'utilisent en rien la puissance de la machine...

>1. Un bon kernel (comme le tien d'ailleurs ) intercepte les plantages aussi si le programme est en _nostub. Donc que le programme soit en mode kernel ou en mode _nostub ne changera absolument rien.
Certes mais un bon kernel (comme le mien d'ailleurs) rend une calculette plus stable pour les programmes kernels car il a pu fire une image du systeme avant l'appel du programme.

>2. Il faut quand-même faire un reset après parce qu'il n'y a aucune garantie que le programme n'a pas corrompu la RAM avant de planter. Un anti-crash ne sert pas à grand chose si on veut avoir une calculatrice qui marche de manière stable.
Certes. Mais perso, je ne le fais jamais.

>Et si elles changent dans AMS 3? Hop, plantage...
>Alors que les programmes utilisant HeapDeref ou Sym* continueront à fonctionner sans problèmes.
Si elles changent on pourra QUAND meme se demerder en creant une image du systeme et en interceptant tous les appels standars de heap et de vat.
Mais je te signales qu'on accede directement, meme en nostub a la structure SYM !
Donc s'il la change (comme le passage ti-92 -> 92+) : TOUS LES programmes poubelles (sauf ceux compiles avec preos 0.60 tongue)


>n as-tu vraiment besoin? Compare les sources de TI-Chess et celles de SMA...
SMA n'a jamais plante chez moi. Tichess si (A cause du lanceur je pense).
Donc tu veux prouver quoi ?
(Et je blague pas).


>t si par hasard ils essayent de lancer le programme à partir de TICTEX -> plantage...
Ben defaut de tictex qui ne supporte pas l'install des TSR. C pas ma faute.

>Et bonjour le gaspillage de place...
Tu peux le changer si tu le souhaites.

>Je signale à ceux qui ne sont pas bêta-testeurs de PreOs que stdlib fait 22093 octets! Oui, 22 KO! Et avec ça, PpHd se plaint que UniOS fait 12 KO... Ben, c'est normal, plus de librairies dynamiques on intègre, plus de place ça prend.
Je signale à ceux qui ne sont pas bêta-testeurs de PreOs que stdlib est un fichier archive qui n'est JAMAIS desarchive : seuls les petits bouts des libs sont desarchives si besoin est.

>Et il faut shrnklib en plus, parce que PpHd n'a pas voulu intégrer ttunpack_decompress au kernel comme il aurait dû faire: ça compresserait mieux, et on n'aurait pas besoin d'une librairie non compressée à part.
Je ne voulais pas imposer de format de compression. Tu peux utiliser ttunpack_decompress si tu le souhaites. Aucune difficulte.
Et la difference de compression est inferieure a 2% alors zzz

>Ah, 22 KO, ce n'est rien? Ben alors, ne te plains pas si tu as 22 programmes qui utilisent les niveaux de gris de TIGCCLIB sur ta calculatrice.
Regarde la difference de fonctionnalite offerte. J'offre beaucoup de fonctions dans beaucoup de libraries. Ce n'est pas comparable. Autant comparer AMS et PreRom.


>Mais l'anti-crash n'est pas du tout une fonctionnalité obligatoire! Avec la récupération de la mémoire archive, ce n'est pas grave si on est obligés de faire un reset. Donc c'est bien de laisser à l'utilisateur le choix s'il veut un anti-crash (auquel cas il peut utiliser PreOs ou KerNO) ou s'il n'en veut pas (auquel cas il n'a besoin d'aucun kernel). L'anti-crash n'est pas un argument en faveur du mode kernel (parce que l'utilisateur a la possibilité d'en utiliser un que le programme soit en format _nostub ou en format kernel).
Certes. Mais c'est mieux avec que sans.


>C'est vrai, merci à ExtendeD pour ça d'ailleurs. C'est toujours bien de travailler contre la discrimination des programmes _nostub par certains kernels, et le fait de n'offrir l'anti-crash qu'aux programmes au format kernel est un exemple de cette discrimination.
Ce n'est pas que ca. J'ai passe de nombreuses heures de recherche avant de trouver une methode efficace (et en plus elle etait simple) pour faire l'anti crash _nostub. Et j'en ai essaye des trucs.
En kernel, c'est bien plus simple : tu fais une image avant, puis hop tu restaures l'image. En nostub, faut trouver un point d'entree en AMS.
Et d'ailleurs je trouve l'anti-crash de kerno largement incomplet.

>Si, tu passes un pointeur vers ta fonction!
Image la complexite de ton programme s'il y en a partout !
Ca devient ingerable en nostub !


>Passer un pointeur vers la fonction est aussi très simple! Un pea func1(PC) suffit. Et pour l'appel, un: move.l x(a7),a0 et un jsr (a0) suffisent. (J'utilise le passage par pile exprès, parce que sinon tu vas te plaindre que je gaspille un registre. )

Mais si c plusieurs disaines de fonctions ?

>Pour le _nostub aussi: si ta DLL en importe elle-même une autre, la limite passe à 3*64=192 KO, la taille totale de la RAM utilisateur.
Et sinon, tu peux aussi décharger une DLL et en charger une autre à la place, ce qui te permet d'aller même au delà des 192 KO (je sais, c'est également possible avec PreOs).

C'est lourd, tres lourd.

>Mais on économise la place prise par la librairie dynamique et la place prise par le kernel, et on peut aussi économiser la place prise par les informations de relogement si on utilise les appels PC-relatifs (c'est possible avec un librairie statique).

Ce n'est valable que pour des libs statiques de petite taille. Des qu'elles depassent 1 Ko, ca devient bien plus discutable (Pour ne pas dire plus !)

C'est vrai, mais si une correction de bogue entraîne nécessairement une incompatibilité (ce qui est parfois le cas), ce n'est pas gênant pour les librairies statiques (les anciens programmes continueront d'utiliser l'ancienne librairie), alors que pour les librairies dynamiques, on est obligés de garder le bogue.
Un exemple: dans TIGCCLIB, on changera peut-être fopen pour refuser d'ouvrir des fichiers cachés, parce que AMS cache les fichiers qu'il utilise pour montrer qu'ils sont utilisés, et qu'il faut éviter d'ouvrir des fichiers utilisés par AMS. On ne pourrait pas faire ça avec une librairie dynamique parce que des programmes qui dépendent de l'ancien comportement ne fonctionneraient plus. (Ceci dit, comme ce changement-ci crée aussi une incompatibilité au niveau des sources, nous sommes en train de chercher une solution meilleure. Mais je ne suis pas sûr qu'il en existe une.)

Si le protocole de la fonction de la lib est BIEN definie, et si sa description est complete, il n'y aura pas de pbs. Et pour votre histoire de fichiers caches, je ne vois pas ou est l'imcompatibilite.

>2. Le plus élégant, c'est ce qui permet aux programmeurs de comprendre la vraie API, et donc le (2). Le (1) cache l'API de AMS aux programmeurs.
Ti n'a jamais supporte cette methode d'acces. Elle est donc illegale !
Cf doc du SDK...

>3. Si on optimise l'écriture (2) (cf. OPTIMIZE_ROM_CALLS), on obtient du code plus court que celui de l'écriture (1).
MAIS ON GASPILLE UN REGISTRE !
Ce qui est tres ennuyant !

>4. Si tu aimes tellement l'écriture (1), je peux mettre un switch dans A68k qui transforme automatiquement le (1) en le (2). Mais ça ne me fascine pas trop personnellement parce que ça cacherait ce qui se passe vraiment.
Tu as vraiment du temps a perdre ! Et il y a la romcall en plus wink

>5. Bientôt, ces 2 écritures seront toutes les 2 dépassées et on passera à la (3):
dc.w $f800+ngetchx
qui est le truc officiel. C'est mieux que le (2), mais moins bon que le (1), en terme d'acces systemes.

91

>Tu ne traffiques pas dans la VAT, tu lis une entrée de la structure documentée vers laquelle le ROM_CALL te renvoie un pointeur. Que cette structure soit dans la VAT ou n'importe où ailleurs n'a aucune importance. Et surtout: l'utilisation des ROM_CALLs permet à TI de rajouter des champs à la fin de la structure sans rendre les programmes qui accèdent aux fichiers incompatibles.
Sauf que chez Ti, on rajoute les infos au milieu (Cf passage ti-92 -> ti92+)

>- n'utilisent pas la fonte modifiée si on utilise RomEdit
Un plus : c'est la meme chose partout ! Pas de discrimination.

>- n'utilisent pas la fonte modifiée si on utilise le programme que Mike Grass compte sortir qui permettra de remplacer les fontes de AMS 2 par des fontes personnalisés sans modifier AMS
Il est toujours pas sorti, alors tu sais zzz.

>- ne fonctionnent pas sur VTI avec une ROM en TIB ou 89U si on utilise d'autres fontes que la fonte de taille moyenne (parce que ce sont des offsets par rapport à doorsos::font_medium, qui ne sont valables que pour les fontes du boot)
Cf Preos 0.60

>- arrêteront de fonctionner de manière irremédiable si TI change l'ordre des fontes dans les nouveaux boot codes (de manière irremédiable parce qu'on ne peut pas modifier le boot code)
Cf Preos 0.60

>Donc ça a bien plus de désavantages que d'avantages.
Si tu le dis. Mais je ne te crois pas.

>Ben non, cf. ci-dessus.
Ca marche sur real Ti

>Je connais exactement 2 jeux _nostub sortis avant AMS 2: CBlaster et CReversi.
>De ces-ci, 100% fonctionnent sous AMS 2, et 0% étaient "à jeter direct".
Ce n'est pas ce que je voulais dire. Mais je connais tes gouts, et je n'en dirais pas plus.

>Non, elle n'est pas faite pour moi, parce que je n'aime pas les programmes instables, et que ton auto-installation n'est pas stable.
Si tu me dis comment detecter ticex, je corrige ca. Enfin bon.
Et je peux quand meme corriger cela, si tu insistes lourdement.

>Voilà, j'ai répondu à tout là.
Moi aussi.

>je rappelle que cela fait belle lurette qu'une rom faite maison circule sur le web
Oué. Mais elle pas fonctionnelle.


>PpHd>De toute maniere cette rom est inutile..
Pourquoi ?

>Si tu veux vraiment faire qqc d'utilie, implante Genlib dans l'ams.
Bah, c archi simple tongue (en fai non, a cause du self modifyng code).

>PpHd> ce serait une bonne idée d'intégrer tigcclib.a à PreRom, comme ça on pourra qd même utiliser les progs pour TI-GCC (avec #include <prerom.h>, qui redéfinirait fopen, etc...)
Et pour les progs existant, je fais comment ? Non, soyons realiste. Premier objectif : SMA / CF / FER3C fonctionnent sur PreRom smile

>Kevin> les DLL nostub sont vraiment horribles. J'ose pas imaginer le temps que j'y passerais si je voulais convertir GTC en DLL _nostub
Je ne te fais pas dire !


>Mais non, c'est tout aussi simple que les DLLs kernel!
Hypocrite !



92

PpHd a écrit :
>Vu le peu de RomCalls qu'il y aura, ta ROM ne servira pas à grand chose. (C'est ce que je dis dès le début. Je savais bien qu'il n'allait pas y avoir grand chose comme ROM_CALLs.) Désolé.
Le but est d'offir une BASE MINIMALISTE. Ensuite pourrons venir se greffer n'importe quoi, avec comme place 2Mo - 2*64K, sans aucune protection d'execution. Mais je la fais pour moi seul. Je ne la distriburais pas. Je suis sûr que des gens peteraient leur calc avec. Alors...

Ben, alors on s'en fiche de la compatibilité avec PreRom. tongue
> aucun programme en C ne pourra tourner sous PreRom. Tu connais le fichier kernel.h ?

Tu connais le fichier tipatch.lib? Il y a des références à $c8 là-dedans...
Mais il est vrai qu'on peut désactiver tout le code qui fait référence à $c8.
>Parce que tu penses à ta PreRom là. Parce que ça ne rentre pas du tout dans la logique "utilisez toutes les fonctionnalités offertes par PreOs, et on s'en fiche des autres kernels" que tu aimes tellement défendre. Non. Je pense encore et toujours que le seul format pour une application d'appeller une ROM_CALL est jsr tios::machin_truc.

Et pourquoi gaspiller 6 à 10 octets pour rien?
Preos utilise le FLINE car c un kernel, voilou.

Au fait, parlant de FLINE, as-tu pensé à implémenter les appels spéciaux $fff0, $fff1 et $fff2 dans PreOs? Il y a des FlashApps qui les utilisent. Cf. http://www.ticalc.org/archives/files/fileinfo/241/24141.html.
>Mais jsr tios::machin prend 6 ou dans certains cas même 10 octets de plus que dc.w $f800+machin. Et comme PreOs permet les appels F-LINE sous tous les AMS, les programmes qui de toute façon nécessitent PreOs ne vont pas tarder à l'utiliser. Je parle de programmation propre ! Donc utiliser une table de relogement des appels systemes. Heureusement que le FLINE est quand meme plus propre que l'acces indirect.

Si "programmation propre" = gaspillage d'octets totalement inutile, alors vive la "programmation sale"! grin

D'ailleurs, pour moi:
 move.l $c8,a0
 move.l toto*4(a0),a0
 jsr (a0)

est propre,
dc.w $f800+toto
est propre, mais seulement si on est en MIN_AMS>=204 et:
jsr doorsos::toto
est moins propre parce qu'on utilise une adresse absolue et on fait confiance à un autre programme(le kernel) pour mettre la bonne adresse.
10 prog utilisant les niveaux de gris de TIGCCLIB = 10 * 1 KO * 2/3 = 6,7 KO de memoire archive utilisée + Lanceur 2 Ko = 8,7 Ko Contre 5 Ko de kernel + 2,5 KO *2/3 de graphlib + 0,6 KO de shrnklib = 7,3 Ko

Il faut un lanceur de toute façon si on utilise ExePack, que le programme utilise TIGCCLIB ou graphlib! Arrête de tricher! grin
Et je ne compte que les niveaux de gris la dedans. Mais on pourrait rajouter les routines graphiques en lib statiques, qui ne feraient que renforcer la dominance du systeme kernel.

Tout ce qui est dans graphlib à part les niveaux de gris est aussi dans AMS.
Si tu rajoutes des routines de librairies statiques en plus, tu devras aussi rajouter au moins une librairie dynamique en plus de l'autre côté.
<< Oui, on peut compresser les librairies dynamiques avec le programme avec la dernière bêta de PreOs, mais avec ça, quel intérêt y a-t'il d'utiliser une librairie dynamique? La librairie statique prendra moins de place parce qu'elle ne comportera on-calc que les fonctions vraiment utilisées, pas la librairie entière. >>
T'es sourd ou quoi ? TON HYPOTHESE N'EST VALABLE QUE POUR UN SEUL PROGRAMME. Des que plusieurs programmes rentrent en jeu, ton analyse s'effondre !

Je te signale que là, je répondais à ton idée de faire un pack archive contenant le programme et toutes les librairies dynamiques qu'il utilise. Cela revient à linker toutes les fonctions statiquement, même celles qu'on n'utilise pas.
>Et toi, tu fais toujours des erreurs de calcul: C'est plutot toi.

Ben non. grin Le lanceur ExePack reste nécessaire si le programme compessé avec ExePack est en mode kernel.
>Non, tu prends la technologie la plus ancienne, celle de Fargo.
Fargo utilise une technologie BIEN SUPERIEURE a celle offerte par AMS !
La preuve : vous etes obblige de rajouter tout un systeme de patch avant d'executer le programme, et une lib statique pour combler les lacunes du format nostub d'AMS. Alors ne dit pas que c'est a jour.

Tous (ou presque) les portages officiels de GCC utilisent un fichier crt0.o qui contient du code à lancer avant de pouvoir lancer main. Le système de patch n'est pas très différent, il est juste plus flexible: pour épargner de la place, on peut supprimer le prologue entier si on n'a pas besoin de ses fonctionnalités. Mais sinon, ce n'est pas différent par rapport à ce que fait GCC sous Windows par exemple.
Compile un programme totalement vide avec Mingw32 et regarde sa taille.
Voilà ce que ça donne chez moi:
unknown@K ~
$ cat empty.c
int main(){}
unknown@K ~
$ gcc -Os -s -fno-rtti -fno-exceptions -o empty.exe empty.c
empty.c:1:13: warning: no newline at end of file

unknown@K ~
$ ls -l empty.exe
-rwxr-xr-x    1 unknown  unknown      [b]3072[/b] Jul 31 06:03 empty.exe

Alors Windows n'est pas moderne? grin
>Il n'y a eu que 2 programmes en langage machine qui ont été programmés à l'époque de AMS 1, mais ont quand-même fonctionné sur HW2 AMS 2.0x dès sa sortie: CBlaster et CReversi.

> Et comme par hasard, ils sont en C _nostub. La raison:
- Ce sont des programmes _nostub qui ne dépassent pas la limite de taille, donc pas besoin de désactiver des protections de AMS.
- Ils ont été écrits avec TIGCCLIB, donc n'utilisent que les ROM_CALLs et n'accèdent pas directement aux structures internes de AMS.
Troisieme raison : ils n'utilisent en rien la puissance de la machine...

Ben si c'est ça, alors vive les programmes qui "n'utilisent en rien la puissance de la machine"! grin
Mieux vaut un programme portable qu'un programme qui "utilise la puissance de la machine" et plante dès qu'une mise à jour de AMS sort.
>Et si elles changent dans AMS 3? Hop, plantage...
>Alors que les programmes utilisant HeapDeref ou Sym* continueront à fonctionner sans problèmes. Si elles changent on pourra QUAND meme se demerder en creant une image du systeme et en interceptant tous les appels standars de heap et de vat.

Pfff... Ça prendra une quantité folle de RAM et ça ne sera pas fiable.
Mais je te signales qu'on accede directement, meme en nostub a la structure SYM !
Donc s'il la change (comme le passage ti-92 -> 92+) : TOUS LES programmes poubelles (sauf ceux compiles avec preos 0.60 tongue)

S'ils la changent, ils vont rajouter les champs à la fin! S'ils l'ont fait différemment entre TI-92 et TI-92+, c'est juste parce que pour eux les programmes assembleur sur TI-92 n'existent pas et qu'il n'y a donc rien avec quoi rester compatible.
Et s'ils rajoutent des champs à la fin de la structure, les programmes utilisant SymFindPtr et compagnie fonctionneront sans problèmes, alors que ceux qui traversent la VAT à la main ne vont pas utiliser le bon offset entre 2 structures SYM_ENTRY et ne fonctionneront donc plus.
>n as-tu vraiment besoin? Compare les sources de TI-Chess et celles de SMA...
SMA n'a jamais plante chez moi. Tichess si (A cause du lanceur je pense).
Donc tu veux prouver quoi ? (Et je blague pas).

Désolé, mais en moyenne, il y a beaucoup plus de personnes chez lesquelles SMA plante que TI-Chess. TI-Chess a planté une seule fois chez moi, et c'était parce que je voulais écrire une sauvegarde par dessus une ancienne sauvegarde archivée (donc c'était aussi de ma faute). De plus, ce bogue (vérification manquante avant d'écrire dans un fichier) est corrigé depuis plus de 2 ans (12 avril 2000) dans TI-Chess, et les versions récents de TIGCC font la vérification directement dans fopen.
Pour le lanceur, il y a aussi de bonnes chances que ton bogue soit corrigé entretemps. Alors que des nombreux bogues dont se plaignent ceux qui ont des problèmes avec SMA, il doit y en rester un certain nombre à mon avis.
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é

93

>Je signale à ceux qui ne sont pas bêta-testeurs de PreOs que stdlib fait 22093 octets! Oui, 22 KO! Et avec ça, PpHd se plaint que UniOS fait 12 KO... Ben, c'est normal, plus de librairies dynamiques on intègre, plus de place ça prend. Je signale à ceux qui ne sont pas bêta-testeurs de PreOs que stdlib est un fichier archive qui n'est JAMAIS desarchive : seuls les petits bouts des libs sont desarchives si besoin est.

Et ça change quoi? Ça reste un gaspillage de mémoire archive!
>Ah, 22 KO, ce n'est rien? Ben alors, ne te plains pas si tu as 22 programmes qui utilisent les niveaux de gris de TIGCCLIB sur ta calculatrice. Regarde la difference de fonctionnalite offerte. J'offre beaucoup de fonctions dans beaucoup de libraries. Ce n'est pas comparable. Autant comparer AMS et PreRom.

La différence est que toi, tu offres plein de fonctionnalité redondantes (soit des fonctions offertes par plusieurs librairies, par exemple genlib qui utilise sa propre routine de niveaux de gris, pas celle de graphlib, soit des fonctions offertes par les librairies alors qu'elles sont déjà dans AMS), ainsi que plein de fonctions que pratiquement aucun programme n'utilise et qui traînent donc sur la plupart des calculatrices totalement inutilisées, alors que nous, on n'offre que ce qui sert vraiment (on dit aux personnes d'utiliser les ROM_CALLs s'ils veulent des fonctions de remplissage de rectangles par exemple), et aucune fonction de TIGCCLIB ne se retrouvera sur une calculatrice sans qu'au moins un programme l'utilise.
>Si, tu passes un pointeur vers ta fonction!
Image la complexite de ton programme s'il y en a partout ! Ca devient ingerable en nostub !

Mais non... Et si tu ne t'y retrouves plus, tu n'as qu'à programmer en C. grin
>Passer un pointeur vers la fonction est aussi très simple! Un pea func1(PC) suffit. Et pour l'appel, un: move.l x(a7),a0 et un jsr (a0) suffisent. (J'utilise le passage par pile exprès, parce que sinon tu vas te plaindre que je gaspille un registre. )
Mais si c plusieurs disaines de fonctions ?

Tu passes 10 pointeurs. C'est tout bête! Et je répète: si tu es trop nul en assembleur pour t'y retrouver si tu le fais en assembleur (personnellement, je ne vois pas le problème!), programme en C! grin
Si le protocole de la fonction de la lib est BIEN definie, et si sa description est complete, il n'y aura pas de pbs. Et pour votre histoire de fichiers caches, je ne vois pas ou est l'imcompatibilite.

Ben, si quelqu'un s'amuse à cacher le fichier de sauvegarde de son jeu, et de l'ouvrir sans le décacher avant, il ne peut pas le faire si on refuse d'ouvrir les fichiers "utilisés" (et le flag "caché" n'est autre que le flag indiquant qu'un fichier est actuellement utilisé - il est juste souvent abusé pour cacher des fichiers).
>2. Le plus élégant, c'est ce qui permet aux programmeurs de comprendre la vraie API, et donc le (2). Le (1) cache l'API de AMS aux programmeurs.
Ti n'a jamais supporte cette methode d'acces. Elle est donc illegale ! Cf doc du SDK...

Et ça, c'est quoi???
Jump Table
Many ROM-located routines are available to native code routines. A table of subroutine entry points is located in ROM. A pointer to this table at absolute address 200 is initialized at power up. This pointer will always be located in the same place in low memory. File exec.inc contains a constant named JUMP_TABLE which contains the address of the table pointer.

("TI-89/92 Plus Assembly Programming", Texas Instruments, 2000)

>3. Si on optimise l'écriture (2) (cf. OPTIMIZE_ROM_CALLS), on obtient du code plus court que celui de l'écriture (1).
MAIS ON GASPILLE UN REGISTRE ! Ce qui est tres ennuyant !

N'empêche que c'est la méthode conseillée par TI si on utilise $c8 (cf. http://education.ti.com/product/tech/89/down/8992pexec.html).
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é

94

PpHd a écrit :
>Tu ne traffiques pas dans la VAT, tu lis une entrée de la structure documentée vers laquelle le ROM_CALL te renvoie un pointeur. Que cette structure soit dans la VAT ou n'importe où ailleurs n'a aucune importance. Et surtout: l'utilisation des ROM_CALLs permet à TI de rajouter des champs à la fin de la structure sans rendre les programmes qui accèdent aux fichiers incompatibles. Sauf que chez Ti, on rajoute les infos au milieu (Cf passage ti-92 -> ti92+)

Parce que les TI-92 ne permettaient pas (officiellement) la programmation en assembleur et qu'il n'y a donc (de leur point de vue) rien avec quoi il aurait fallu rester compatible.
>- ne fonctionnent pas sur VTI avec une ROM en TIB ou 89U si on utilise d'autres fontes que la fonte de taille moyenne (parce que ce sont des offsets par rapport à doorsos::font_medium, qui ne sont valables que pour les fontes du boot)
Cf Preos 0.60

>- arrêteront de fonctionner de manière irremédiable si TI change l'ordre des fontes dans les nouveaux boot codes (de manière irremédiable parce qu'on ne peut pas modifier le boot code) Cf Preos 0.60

Alors on a le choix maintenant: incompatibilité avec VTI (+TIB/89U/9XU) et incompatibilité potentielle avec des boots futurs, ou alors incompatibilité avec tous les kernels autres que PreOs 0.60 et futurs, y compris les anciennes versions de PreOs...
Je ne dis pas que ce n'est pas une bonne idée de mettre des RAM_CALLs séparés, mais je dis que c'est trop tard maintenant. Il aurait fallu y penser dès le début.
>PpHd>De toute maniere cette rom est inutile.. Pourquoi ?

Parce qu'il n'y a pas de fonctions de mathématiques.
>Si tu veux vraiment faire qqc d'utilie, implante Genlib dans l'ams.
Bah, c archi simple tongue (en fai non, a cause du self modifyng code).

tongue Je t'ai bien dit que ce n'est pas si bien que ça, et qu'il fallait l'éviter. grin
Mais bon, je ne devrais pas me plaindre, vu que h220xTSR 1.10 et gray3P (mes niveaux de gris à 3 plans) utilisent aussi du code auto-modifiant. grin
>Mais non, c'est tout aussi simple que les DLLs kernel! Hypocrite !

Mais si, avec la dernière version de TIGCC, c'est vraiment tout aussi simple.
Au lieu de mettre:
#define HelloFromDLL mydll__0000
void mydll__0000(void);
#define SumFromDLL mydll__0001
int mydll__0001(int,int) __attribute__((stkparm));
#define MessageInDLL mydll__0002
extern const char mydll__0002[];
#define GlobalVarInDLL mydll__0003
extern long mydll__0003;

tu mets:
#define HelloFromDLL _DLL_call(void,(void),0)
#define SumFromDLL _DLL_call_attr(int,(int,int),__attribute__((stkparm)),1)
#define MessageInDLL _DLL_reference(const char,2)
#define GlobalVarInDLL _DLL_glbvar(long,3)

Je ne vois en quoi c'est plus compliqué!
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é

95

Plantage windows. J'ai perdu ma reponse sad
Je charge Pollux, de repondre a ma place.

96

pphd: si tu mets Genlib dans l'ams, alors je suis pret a l'utiliser!
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

97

>>Mais non, c'est tout aussi simple que les DLLs kernel!
>Hypocrite !

Mais si, avec la dernière version de TIGCC, c'est vraiment tout aussi simple.
Au lieu de mettre:

#define HelloFromDLL mydll__0000
void mydll__0000(void);
#define SumFromDLL mydll__0001
int mydll__0001(int,int) __attribute__((stkparm));
#define MessageInDLL mydll__0002
extern const char mydll__0002[];
#define GlobalVarInDLL mydll__0003
extern long mydll__0003;

tu mets:

#define HelloFromDLL _DLL_call(void,(void),0)
#define SumFromDLL _DLL_call_attr(int,(int,int),__attribute__((stkparm)),1)
#define MessageInDLL _DLL_reference(const char,2)
#define GlobalVarInDLL _DLL_glbvar(long,3)
Je ne vois en quoi c'est plus compliqué!


roll si tu voyais les sources de GTC, je pense que tu t'amuserais bien à passer des dizaines de fonctions callback en argument, sans compter que si tu rajoutes une ligne dans une fonction, tu dois rajouter le prototype dans la définition de la fonction, et puis ensuite tu dois t'amuser à rechercher toutes les références à ta fonction et à rajouter la fonction utilisée dans chaque appel de la fonction triso

D'autant plus que côté rapidité (et mémoire), bonjour...

Si tu veux je te file la moitié des sources de GTC, et tu les portes au format DLL _nostub wink (tu risques de bien t'occuper, avec 498/2=249 ko de code source gringringrin)


PpHd>
>PpHd> ce serait une bonne idée d'intégrer tigcclib.a à PreRom, comme ça on pourra qd même utiliser les progs pour TI-GCC (avec #include <prerom.h>, qui redéfinirait fopen, etc...) Et pour les progs existant, je fais comment ? Non, soyons realiste.

Ben il suffit de recompiler les progs intéressants (genre personne n'ira recompiler TT[jeu_de_plateau_quelconque] grin), la plupart sont quand même open-source...
N'empêche que si j'ai pas GTC sous PreRom, del prerom.tib >nul smile
Je veux GTC & PreRom! (pour avoir TiGCC.chm dessus wink non je déconne)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

98

A quoi sert GTC sur la PreRom puisqu'il y aura GTool ??trisotrisotrisoroll
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

99

GTools ne sortira pas, il faudrait te mettre au courant mobile
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.

100

Ca fait juste depuis 2 ans que je repetes que c'est un fakesmile)
Enfin bon un peu d'humour ne fait pas de mal.
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

101

Ca fait juste 2 ans que tu répètes la même connerie.
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.

102

Si t'etais moins naifroll
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

103

Mais oui on sait. Et toi tu es supérieur aux autres.


Changeras-tu un jour ? smile
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.

104

ha ha c encore le très méchant Pollux [devil] qui a fait exprès de faire un fake et qui rigole depuis 2 ans de sa bonne blague [rotfl]

Heureusement que TiMad est là triso

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

105

magic
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.

106

Fanchement Pollux, au moins t'as un merite, c'est d'avoir fait le plus gros fake de la commu... (au fait ce SDK, ca fait 3 ans que tu le progs (mega lol).
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

107

pffffff
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.

108

...

Et t'as fait quoi depuis 3 ans toi? Meta-Kernel? GSTools? Non, et c pas ça qui t'as empêché de te vanter... Alors on en reparlera à la sortie de GTC...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

109

>Pollux: Dis moi les ROM_CALLS necessaires pour Gtc alors.

110

Qui t'as dit que le métakernel = gstool a été avandonné?
D'ailleur, j'avais donner des preuves (shot annimés) ... et ces shts non pas été fait sous psp..roll
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

111

oui oui, c cool.....
TI-NSpire Pwned !

Thx ya all...thx ExtendeD.

...The rebirth of the community...

112

iceman : on a beau être plusieurs à avoir des preuves que Pollux ne mythonne pas, Môssieur Sabatier persiste à croire le contraire roll
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.

113

Tiens j'ai change le nom de mon projet : Pedrom. Ca sonn bien mieux je trouve smile

114

Pedantic ROM?
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é

115

Ben l'IDE utilise des tonnes et des tonnes de ROM CALLs, ça va pas être évident...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

116

Voici la liste pour l'heure des ROM_CALLS que je compte mettre.
(Un + signifie que ca a ete implante.)
Et j'ai essaye ma premiere TIB sur Vti. Emotion (C chiant de programmer des tibs)
Ma routine de gestion des touches est plus dynamique que celle d'AMS.
(Elle perd moins de touches).

La liste :
Max: 0x2AB = 683 !

HeapAlloc
HeapAllocPtr
HeapAllocThrow
HeapAllocHigh
HeapAllocHighThrow
HeapRealloc

HeapFree
HeapFreeIndir
HeapFreePtr

HeapGetLock
HeapLock
HLock
HeapPtrToHandle

HeapAvail
HeapDeref
HeapCompress
HeapEnd
HeapGetHandle
HeapMax
HeapMoveHigh
HeapSize

kbhit +
GKeyIn +
GKeyDown +
GKeyFlush +
pushkey +
ngetchx +
OSInitBetweenKeyDelay +
OSInitKeyInitDelay +

DrawStr +
DrawChar +
DrawLine +
ScrRectFill +
ScreenClear +
DrawPix +
MoveTo +
LineTo +
FontGetSys +
FontSetSys +
SetCurAttr +
PortSet +
PortRestore +

ER_catch +
ER_success +
ER_throw
ER_throwVar +
longjmp +
setjmp +

memchr +
memcmp +
memcpy +
memmove +
memset +

strlen +
strcat +
strcpy +
strchr +
strcmp +
strncat +
strncmp +
strncpy +
strcspn
strprk
strrchr
strspn
strstr

sprintf
printf
vfprintf

ST_eraseHelp
ST_batt
ST_busy
ST_folder
ST_helpMsg

idle +
off +
OSContrastUp +
OSContrastDn +
OSSetSR +

AddSymToFolder
FindSymInFolder
FolderAdd
FolderClear
FolderCount
FolderCur
FolderCurTemp
FolderDel
FolderFind
FolderGetCur
FolderOp
FolderRename

HSymDel
HSYMtoName
SymAdd
SymAddMain
SymAddTwin
SymDel
SymFindFirst
SymFindNext
SymFindMain
SymFindPrev
SymFindPtr
SymMove

MakeHSym +
DerefSym +
SymCmp +
SymCpy +
SymCpy0 +
StrToTokN +
TokToStrN +

OSFreeTimer +
OSTimerCurrentVal +
OSTimerExpired +
OSTimerRestart +
OSRegisterTimer +
OSVFreeTimer +
OSVRegisterTimer +

OSEnableBreak +
OSDisableBreak +
OSCheckBreak +
OSClearBreak +

(Ne pas oublier de NE PAS AUTORISER L'ECRIRE DANS LES SECTEURS PROTEGES !)
EM_abandon
EM_blockVerifyErase
EM_findEmptySlot
EM_GC
EM_survey
EM_write
FL_write
EM_moveSymFromExtMem
EM_moveSymToExtMem

OSCheckSilentLink
OSLinkCmd
OSLinkOpen
OSLinkClose
OSLinkReset
OSReadLinkBlock
OSWriteLinkBlock
OSLinkTxQueueInquire
LIO_RecvData
LIO_SendData

_ds16u16
_ms16u16
_du16u16
_mu16u16
_ds32s32
_ms32s32
_du32u32
_mu32u32


Si tu en veux d'autre, dis le.

117

eekeek ça a l'air cool !!

un 'tit shot de la ROM ?? gni
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

118

Pedrom v0.1 Medium Font en blanc sur noir
By PpHd (2002)Small Font en noirsur blanc

Troisieme ligne on peut y taper ses touches au clavier.

119

moi je ve bien la tester en on-calc si tu ve !
TI-NSpire Pwned !

Thx ya all...thx ExtendeD.

...The rebirth of the community...

120

Non trop dangereux (Remarque pas sur wink). Disons que j'attend encore un peu avant de tester sur ma calc on-calc wink

Et sinon Diamond /2nd + ON et Diamond + '+' / '-' fonctionnent aussi.