erf...
quel courage pr lire tout ça...
PpHd
a écrit : Je rappelle juste que je boycotte les programmes 'nostub' sur ma calc (sauf un).
>Une librairie dynamique est une perte de place, pas un gain de place, par rapport à une librairie statique. Tiens en furetant sur le net j'ai trouve la secte des adeptes des libraries statiques dont voici le gourou : Richard A. Burgess
>Ceux qui prétendent que c'est un gain oublient que la taille des librairies fait partie de la taille du programme, qu'elles soient statiques ou dynamiques. Et toi tu oublies toujours qu'on ne les compte qu'une et seule fois.
>Arrête de changer d'avis tous les 6 mois et d'insulter tout le monde qui ne partage pas ton avis de la saison. Il y a quelques mois, tu disais exactement le contraire. C'est quoi qui t'a fait changer d'avis? LOL. Tu connais pas encore Timad ?
>Avec une librairie statique, seules les fonctions réellement utilisées se retrouveront sur la calculatrice.
Faux. Seuls les fichiers objets rellement utilises sont sur la calculatrice
Donc ca obblige au passage a faire des sauts longs entre les fichiers objets.
>2 * la taille de genlib - la taille du kernel de différence. + La taille de ttstart
>genlib n'est pas du tout optimisée en taille, Faux. Genlib est optimise en taille et en vitesse. Sinon je vois pas pkoi je ferais du self modifing code pour reduire la taille.
>PpHd dit que "de toute façon il n'y a qu'une copie, donc on se fiche de la mémoire gaspillée" Je n'ai jamais dit ca. Genlib fait partis des libs consommant le moins de memoire (contrairement a Xlib ou GraphX) contrairement aux idees recues. (Mais plus qu'extgraph, ca te va ?).
>Une librairie statique gaspillera nettement moins de place.
Avec un programme, avec une librarie, oui. Mais avec 2 programmes, la non.
>Il n'y a pas de double-buffering automatique HumHum. Il manque le timer... Et c'est tout pour que ca soit niquel.
>il y a une tentative de rajouter un support pour du double-buffering de manière sale, en permettant au programme de changer les adresses des plans, de la part de PpHd, mais seulement dans PreOs, et puis ce n'est pas du double-buffering automatique Faux. C'est dans Teos, DoorsOs et Unios aussi. C'est TRES standard.
>pas de synchronisation Tu en veux ? En 1 minute je te l'ajoute.
>Plus de la moitié de ses fonctions ne sont que des wrappers autour de ROM_CALLs ou des réimplémentations de ROM_CALLs. Les fonctions bitmap/ligne sont au moins 8x plus rapide que les fonctions Bitmap/ligne d'AMS.
>c'est une implémentation médiocre des niveaux de gris En bon francais, on dit Implantation
PpHd a écrit :
>Mais bon, l'anticrash _nostub de PreOs marche très bien. (Normal, ce sont ExtendeD et moi qui avons codé la moitié. PpHd n'était pas très motivé là-dessus. Moi si. ) Hum... Tu es de mauvaise foi. Tu as fait la restauration des TSR apres le crash. Extended a fait la liberation des DupScreens. J'ai fait tout le reste ce qui n'est pas rien.
>Enfin, j'avoue que je ne sais pas exactement ce qu'il fait, ni ce qu'il ne fait pas. Donc peut-être qu'il a des trucs que PreOS ne fait pas. Mais dans le cas contraire, je ne vois vraiment pas pourquoi ce programme existe (et ne réponds pas : "pour gagner 5 ko") + Il fait la remise a jour du timing de la RAM apres le trap #4 (Source de plantage a mon avis, car il ne teste pas l'etat des piles).
+ Il fait un Heap Check pour verifier si la Heap est corrompu apres un plantage et t'avertir (Interet reel ?)
>Le résultat est simple : dans un cas le programme est autonome, dans l'autre il ne l'est pas. Je peux te pondre du kernel qui s'execute directement !
Et je te rappelle que la plupart des programmes nostub sont : + compresse : donc il faut un lanceur, donc ce n'est plus autonome.
+ >24K : Donc il faut un lanceur sur AMS 2.0x.
>La calculatrice peut planter à tout moment, même avec un anticrash! Il faut donc toujours archiver les fichiers qu'on veut garder!
Meme avec AMS seulement. Ca tombe bien Preos recupere meme les bogues d'AMS. Et parfois on modifie sans arret un fichier. donc on n'a pas interet a l'archiver tout le temps.
>La seule fonctionnalité en moins, c'est le support pour un format de programmes dépassé (émulation Fargo, appelée aussi "mode kernel"). Desole de te contredire, mais "l'emulation fargo" comme tu l'appelles n'emule aucun programme ecrit pour Fargo.
>>de plus su tu ajoute la compression, il faut ajouter le decompresseur...
>Pour les 2 versions (_nostub, kernel), donc ça s'annule quand on fait la différence.
Pas tout a fait.
Le decompresseur kernel peut etre lui meme compresse par une autre lib plus petite
>Des librairies comme XLib ou genlib ne sont pas suffisamment flexibles pour convenir pour tous les usages.
Je n'ai jamais dit que genlib servait a autre chose qu'a faire des jeux !
Liste des jeux/programmes sortis avec genlib :
+ SMA
+ CF
+ Total Destruction.
+ Pokered
+ Kirby
+ Mapmaker
+ sprmaker + Small
Et y'a encore plein de jeux qui ne sont pas encore sortis mais qui l'utilisent (megaman, seiken, Super Monster anhiliation, ...)
>Le meilleur jeu de tous les temps existe déjà et n'a pas besoin de kernel. Tout le monde n'a pas les memes gouts.
>ce n'est pas dépassé, puisque c'est encore utilisé
>et c'est encore moins dépassé, vu que c'est encore en évolution Clap Clap.
>>ça risque pas dendommager la flash que d'archiver sans cesse ?
>Non. Je ne suis pas sur. Le segment de Garbage risque d'avoir une usure bien superieure aux autres segments...
>>ce n'est pas dépassé, puisque c'est encore utilisé
>DOS est encore utilisé, donc DOS n'est pas dépassé???
>Ce n'est pas parce que quelque chose est encore utilisée que ce n'est pas dépassé. Si on recherche un systeme ne consommant pas de ressources pour rien, alors non, DOS n'est pas depasse.
>>et c'est encore moins dépassé, vu que c'est encore en évolution
>DOS est encore en évolution, donc DOS n'est pas dépassé???
>Il y aura toujours des nostalgiques (comme PpHd, ou comme les développeurs de FreeDOS) qui
>feront évoluer les systèmes totalement dépassés.
Pour moi, c'est le format _nostub, le truc archaique. Y'a rien dans ce format. De la relocation ! C'est tout. La belle affaire.
Et la tigcc team doit rajouter des disaines de patche pour faire le loader 'nostub'....
Qui essaye de faire evoluer son format vers le format kernel ?
PpHd
a écrit : Qui a rajoute les DLL parce qu'il bavait devant les brillantes libraries kernels ?
>Le système de kernels et de librairies dynamiques a été créé:
>- pour remplacer les ROM_CALLs, mal documentés à l'époque. Ce n'est plus le cas depuis
>janvier 2000 (sortie de la documentation de TIGCC).
>- pour faciliter le portage des vieux programmes Fargo.
C'est COMPLETEMENT FAUX ! Le kernel a ete cree : + Pour le support des libs dynamiques.
+ Pour eviter d'avoir ce support dans chaque programme.
+ Pour mettre a jour facilement le kernel.
>Il n'y a vraiment pas de raison de le ressortir pour lui faire faire plein d'autres choses pour lesquelles il n'est pas prévu et pour lesquelles il y a des solutions meilleures (librairies statiques, fichiers de données externes etc.). Developpe plus.
>Je ne vois pas la différence fondamentale entre les 2 classes de librairies que tu distingues. La seule différence est que ExtGraph est plus flexible et que ses fonctions sont suffisamment bien conçues pour ne pas être interdépendantes. On peut faire un jeu avec exactement la même facilité qu'on utilise une librairie de style ExtGraph ou une librairie de style genlib. Justement. C'est ca le probleme. Tu ne vois pas.
>Une librairie conçue de la même manière que ExtGraph (statique, fonctions indépendantes entre elles), mais avec des routines clippées, serait suffisamment flexible pour convenir pour pratiquement tous les jeux que j'ai vus. Les routines de sprites clippées sont la seule chose qui manque à ExtGraph. Faux. Demande a squale. Faudrait supporter les ecrans virtuels de differentes tailles en plus.
>Ce ne sont pas des programmes DOS, ce sont des programmes console Win32.
Les programmes console win32 sont plus chiants que les programmes dos. Au moins, les progs dos n'effacent pas automatiquement la fenetre texte apres leur fin.
PpHd a écrit :
>genlib essaye un peu de "faire le café" et ce n'est pas vraiment une bonne idée. Pour l'allocation de mémoire, les fonctions de la ROM marchent très bien si on les utilise correctement (c'est-à-dire si on n'alloue pas 10000 nœuds de listes chainées dans des blocs séparés). Ben oui. Mais dans le cas contraire, lorsqu'on A BESOIN de faire des allocations/desallocations de maniere tres intensives, genalib est LA solution a vos problemes. Je vous rappelle que Nitro/Dark Angel ont boostes les performances de leurs programmes de 50% juste en remplacant malloc par geanlib__alloc (attention il ne s'agissait pas dee programmes de bench mais de vrais programmes)... ce qui laisse imaginer le gain de vitesse reel entre les deux fonctions.
>Et il y a plein de solutions pratiques pour gérer le clavier (_keytest de TIGCCLIB par exemple.
Le Joypad est bien plus pratique. Sur V200, le joypad de genlib a ete adapte suivant la config de touches pour ne pas utiliser F1...F8, mais des touches bien plus pratiques. Et cela, tout en restant compatible avec la premiere version de genlib qui date de plus de 3 ans.
>Là, c'est un effet purement matériel, et je ne vois pas en quoi l'utilisation de genlib y changerait quelque chose. Peut etre un choix des touches judicieux qui empechent l'apparition de touches fantomes...
>Et ben, tu le rediriges. Mais tu ne peux pas utiliser une lecture de clavier bas niveau quelle qu'elle soit avec l'AI5 de AMS qui tourne, sinon les bogues sont garantis (le curseur vers le haut est pris pour [ESC] et des trucs du genre). Si tu peux. Tu fais un OSSetSR(0x500); avant puis un OSSetSR(0x0000); apres.
>_keytest et les pseudo-constantes RR_... de compat.h sont faits pour ça. Bonjour la taille du code genere.
>Mais XLib et genlib sont loin d'être des librairies de jeux complètes. Ce sont juste des librairies graphiques auxquelles on a rajouté quelques fonctions par ci, par là pour "faire le café", alors qu'il y a des solutions meilleures pour la même chose (test de touches par exemple - il y a plusieurs méthodes, toutes plus flexibles que le joypad de genlib).
Demande a PAD s'il ne pense pas que genlib est une librarie de jeux. Bon une librarie graphique orientee jeux, ca te va ?
Et je prefere 100x le joypad de genlib a ton keytest.
Pen^2 a écrit :
Tu ne trouves ça pas genant du tout d'habitude que les codeurs soient forcés de recompiler
Blue_Z a écrit :
Pro-kernel : oui, mais c'est la même chose avec les librairies statiques, si une fonction exportée change de nom, on doit mettre à jour tous les programmes qui l'utilisent.
Pro-nostub : non, car quand une fonction est définie comme exportée, elle ne change jamais de nom (c'est la règle)
Pro-kernel : avec les librairies kernel on n'a pas ce problème si on utilise les ordinaux
squale92 a écrit :
erf... quel courage pr lire tout ça...
ExtendeD a écrit :
d/ler le pack de TIGCC en même temps avec une petite connection par exemple(c'est mon cas). L'est gros le pack,
XDanger a écrit :
>>2 * la taille de genlib - la taille du kernel de différence.
>+ La taille de ttstart Parfaitement d'accord;
mais ttstart n'est pas très gros par rapport à GenLib ou à PreOS...
>>genlib n'est pas du tout optimisée en taille,
>Faux. Genlib est optimise en taille et en vitesse. Sinon je vois pas pkoi je ferais du self modifing code pour reduire la taille. Tiens, toi aussi tu fais du self-modifying code ?
>>Une librairie statique gaspillera nettement moins de place.
>Avec un programme, avec une librarie, oui.
>Mais avec 2 programmes, la non.
>(Tu fais toujours la meme erreur, c'est lassant). Avec deux programmes ou plus, pas trop. Mais peu de monde a deux programmes ou plus, tous programmés avec GenLib, en même temps, sur la même calculette (cf la liste que tu donnes ci-dessous: plusieurs de ces programmes sont excellents, sans équivalent; mais prennent une place monstre !)...
>>il y a une tentative de rajouter un support pour du double-buffering de manière sale, en permettant au programme de changer les adresses des plans, de la part de PpHd, mais seulement dans PreOs, et puis ce n'est pas du double-buffering automatique
>Faux. C'est dans Teos, DoorsOs et Unios aussi. C'est TRES standard. C'est peut-être très standard dans les kernels, mais ça n'est pas forcément très propre (ça dépend ce qu'on considère propre, évidemment; mais je suis de l'avis de celui qui a écrit ça, c'est probablement Kevin)...
> Ca tombe bien Preos recupere meme les bogues d'AMS. Personnellement, je n'ai jamais vu AMS planter tout seul, si un programme en ASM (_nostub ou kernel) n'a pas fait n'importe quoi. Peut-être que toi, tu l'as vu; mais pas moi.
> Pour moi, c'est le format _nostub, le truc archaique. Y'a rien dans ce format. Oui, ce format est assez faible (pour TI, les programmes ASM sont visiblement une erreur dans AMS...).
Mais c'est le format natif d'AMS, i.e. LE STANDARD...
>Tu fais un OSSetSR(0x500); avant puis un OSSetSR(0x0000); Moi, je fais asm("move.w #0x0400,%%d0; trap #1" : : : "d0","d1"); qui est exactement pareil, qui détruit exactement les mêmes registres, mais qui prend moins de place et de temps. Faire cela n'est actuellement possible qu'avec TIGCC.
ExtendeD a écrit :
Pourquoi d1 ?
Thibaut a écrit :
Kevin > Ce qui veut dire qu'à chaque fois qu'on rajoute quelque chose, tu devras également mettre à jour GraphX...
PfffJe suis dans le cas de n'importe quel programmeur qui doit recompiler son programme s'il veut profiter d'une amélioration d'ExtGraph, TIGCClib, etc.
> regarde comment fait le swap-double-buffering de TIGCCLIB (du swap-triple-buffering n'est autre que du gaspillage de RAM, d'ailleurs)
A moins que je me trompe, votre système oblige à attendre une synchronisation == perte de temps.
Kevin Kofler
a écrit : Tu m'expliqueras pourquoi tu as besoin d'une telle vitesse pour les lignes.
jackiechan
a écrit : Oui, mais pour programmer un FillTriangle, il faut bien faire d'abord une routine de tracé de lignes horizontales rapide.
PpHd a écrit :
>>Je rappelle juste que je boycotte les programmes 'nostub' sur ma calc (sauf un).
>Raison ? Aucune si ce n'est mon plaisir personnel. Je detaille ?
>Mais pour faire cela, il faut avoir une estimation du nombre de programmes qui utilisent
>cette librairie et qui seront présents en même temps sur la calculatrice de l'utilisateur,
>pour savoir par combien diviser la taille à rajouter à la taille du programme. Et en
>l'absence d'une telle estimation, 1 (donc compter la taille de la librairie dynamique
>entièrement) est une approximation bien meilleure que l'infini (donc ne pas compter la
>taille de la librairie dynamique du tout). Entre 1 et l'infini, il y a de la marge, tu ne crois pas ? Et 2, 4 ou 5 ? Ou meme 10 ?
>Et si la librairie statique est codée correctement, chaque fonction sera dans son propre
>fichier objet. Donc ça revient au même. Pas forcement. Elle peut etre tres bien codee mais n'avoir qu'un seul fichier objet.
>Une autre solution, plus propre, est de mettre les fonctions qui sont toujours utilisées
>ensemble dans le même fichier objet, ce qui permet les références PC-relatives communes.
>C'est la solution utilisée dans TIGCCLIB pour LoadDLL et UnloadDLL, par exemple.
Mais pas pour votre surcouche flottante autour d'AMS.
Quand je pense qu'il y a 6 appels de routines successifs (3 par vous, 3 par AMS)...
qui ne font juste que changer la position des parametres. C'est halucinant, meme si ces routines sont bien lentes.
>Et en tout cas, l'overhead des relogements absolus dans les librairies statiques sera
>pratiquement toujours plus petit de l'overhead des librairies dynamiques (table
>d'importation, table d'exportation, relogeur (kernel par exemple), ...).
"pratiquement" ? Detaille un peu plus, s'il te plait. Je voudrais connaitre les fois ou ca pourrait etre plus grand, selon toi.
>Et la taille du décompresseur utilisé en mode kernel (shrnklib par exemple), tu ne la
>comptes pas? skrnklib < ttstart.
>>Faux. Genlib est optimise en taille et en vitesse. Sinon je vois pas pkoi je ferais du
>>self modifing code pour reduire la taille.
>Certes, mais tu as bien optimisé la vitesse au détriment de la taille à pas mal d'endroits.
J'ai optimise en vitesse lorsque c'etait necessaire. En taille, ailleurs. Il me semble que c'est le mieux non ?
>>>Une librairie statique gaspillera nettement moins de place.
>>Avec un programme, avec une librarie, oui.
>>Mais avec 2 programmes, la non.
>Non, tes routines de sprites 16×16 choisissent parmi 3 boucles différentes. ExtGraph
>utilise une seule. Donc il faut 3 programmes avec ExtGraph (pas 2) pour prendre la même
>place pour la routine de sprites que genlib. Je ne comprends pas ta reflexion. Enfin si je la comprends, mais je ne comprends pas pourquoi tu me reponds cela.
>Tu m'expliqueras pourquoi tu as besoin d'une telle vitesse pour les lignes. Pour les
>sprites, je comprends encore (BitmapPut est quand-même excessivement lent, même si c'est
>tout à fait utilisable pour pas mal d'applications), mais pour les lignes, il ne faut pas
>exagérer. Et quant à l'utilité de graphlib::clr_scr et graphlib::clr_scr2 par exemple, je
>ne la vois pas du tout. ScreenClear et ScrRectFill(ScrRect,ScrRect,A_REVERSE)
>respectivement font ce travail très bien. On n'a pas besoin d'effacer l'écran des milliers
>de fois par seconde.
Tu n'as jamais fait de programmation oriente temps reel a ce que je vois.
Une piste: meme si on n'a pas pas besoin d'effacer l'ecran des centaines de fois par seconde, le gain obtenu permets de gagner des cycles la, pour afficher plus d'elements ailleurs.
>Ça par contre, c'est très utilie. Si le heap est corrompu, tu as intérêt à faire un vrai
>reset tout de suite, sinon tu risques de te retrouver avec un gros plantage et/ou avec des
>variables corrompues.
Pourquoi ne resete-t-il pas tout de suite alors ? Pourquoi afficher une fenetre suceptible de faire tout planter irremediablement ?
>Pourquoi te faire tellement ch**r à essayer de rendre le mode kernel pseudo-autonome s'il
>suffit d'utiliser le mode natif (_nostub) pour obtenir l'autonomie. Parce que le format nostub est trop limite. Le format kernel est bien plus evolue et flexible.
>D'où les lanceurs personnalisés qui font que le programme n'apparaisse que comme un simple
>fichier de données et que le lanceur apparaisse comme un programme autonome. C'est très
>pratique et assez intuitif. 1. Le programme ne devient plus "autonome". Il y a 2 fichiers.
2. Combien de personnes ont grace a cela, plusieurs lanceurs de fichiers type 'ttstart' ? Des milliers ? Surement.
>Il y a beaucoup moins de personnes à avoir des difficultés à lancer des programmes _nostub
>compressés (en admettant que le lanceur soit à jour pour AMS 2.08) que des programmes
>kernel. Je n'ai jamais pretendu que le kernel etait pour les noeudnoeuds.
Mais je suis sur qu'on peut trouver des personnes capables de vouloir lancer le PPG directement.
PpHd a écrit :
>On archive une copie. Et pour qu'il y ait toujours une copie archivée à tout moment,
>:Archive fichier
>:Unarchiv copie
>:DelVar copie
>:CopyVar fichier,copie
>:Archive copie
>:Unarchiv fichier
>quand on veut mettre à jour la copie. Tu utilises beaucoup ta FlashRom. Trop a mon gout. Mais c'est ton choix.
>Si, il peut émuler des programmes écrits pour Fargo et réassemblés ("recompilés"),
>dans beaucoup de cas sans modifications.
...
Pourquoi je m'embete a faire des versions Fargo de mes programmes si c'est compatible source ? A je suis nul parfois. ...
>Tu as tendance à ne pas faire la différence entre "compatibilité" et "compatibilité
>binaire". Il y a aussi la compatibilité source. Tu as parle d'emulation. Pas de compatibilite source, je te rappelle.
>Et puis, PlusShell 1.00 alpha était livré avec un convertisseur capable de convertir les
>binaires Fargo en binaires kernel (mais compatibles AMS 1.00 seulement). Il marchait tres mal. En fait je ne me souviens pas qu'il est marchait une seule fois lorsque je l'ai utilise.
>Ce qui fait 2 librairies à la place d'une. Je ne pense vraiment pas que ce soit un gain. Tout depend de la compression des libraries successives.
>Total: 2 programmes d'auteurs tiers (Total Destruction, Small). Tous 2 jamais sortis de
>bêta (Small n'est même pas sorti en bêta publique!). Tout le reste est produit comme par
>hasard ( ) par l'équipe Time To Team, et également sous état de bêta.
Et ?
Au fait j'ai oublie Zenith SagaMea culpa.
>Je ne discute pas de vaporware, désolé. (Cf. aussi la réponse précédente.) J'ai eu des versions de ces programmes entre les mains, donc ce n'est pas du vaporware.
>Je ne pense pas. La réorganisation des archives n'est pas si fréquente que cela.
Cela depend. Moi je fonctionne avec 95-97% de mes archives pleines. Dans ces cas la, l'archivage d'un simple fichier peut me faire faire plusieurs garbesh successifs.
>Peut-être, mais si on recherche un systeme ne consommant pas de ressources pour rien, alors
>on n'utilise pas de kernel sur sa TI-89/92+/V200. Donc toi meme tu dis que DOS = nostub ?
PpHd a écrit :
>Il y a dans ce format:
>- que c'est le format natif de AMS.
Ok.
>- qu'on n'a pas besoin d'écrire ses propres routines pour le reloger, parce que EX_patch le
>fait. Ok. Mais le format est lourd.
>- que c'est nettement plus facile à gérer pour le linkeur. ? Et alors ?
>- qu'on n'a pas besoin de déreloger un programme avant de le reloger avec une nouvelle
>adresse. On a quand meme besoin de le delocker et de libere la copie archivee...
Et quand bien meme ce n'est ni lourd, ni penible.
>Ça s'appelle du "startup code". Ce genre de code fait partie intégrante de tout programme
>sous pratiquement n'importe quel système d'exploitation, même Unix ou Windows.
Je dirais plutot : de tout programme tournant en C ou avec un langage de meme niveau. Mais c'est mon avis personnel.
>Le grand avantage du format _nostub est que le "startup code" est facultatif.
>On n'est pas obligés de mettre un code d'initialisation (contrairement au
>format kernel et à son stub obligatoire d'ailleurs). On peut dire à TIGCC
>d'en mettre pour implémenter des fonctionnalités. Il est normal que des
>fonctionnalités supplémentaires nécessitent du code supplémentaire.
>Mais on peut aussi écrire des programmes sans aucun startup code
Bravo ! (Est-ce ironique ? Je ne sais plus.) Mais c'est surtout la facon donc c'est implante que je critique.
Et puis une fonctionnalite = un ajout. A la base, il ne devrait y en avoir aucun.
>(sauf un bra _main, mais c'est dû à la manière dont les fonctions C sont
>organisées dans un exécutable, pas au format _nostub). En kernel, ce bra _main est facultatif.
>On n'essaye pas du tout de faire évoluer le _nostub vers le format kernel.
>Au contraire, c'est toi qui copies en rajoutant à PreOs l'équivalent de
>tous nos patches (SET_FILE_IN_USE_BIT etc.). D'ailleurs, SET_FILE_IN_USE_BIT
>par exemple marche très bien avec un programme pour kernel (comme quoi le
>"startup code" de TIGCCLIB n'est pas une exclusivité du mode _nostub).
>Certes, ce n'est pas nécessaire avec PreOs 0.64 (parce que tu nous as copié),
>mais la version la plus récente de PreOs n'est pas le seul kernel, que tu le désires ou non.
Qu'est-ce que je rajoute tant ? Je m'apercois en lisant votre doc qu'AMS a un bug
(bug dont je m'etait rendu compte en lisant EV_eventLoop il y assez longtemps mais
qui etait tellement visible que je croyais avoir tord face au code de Zj).
Je le corriges donc ! En quoi vois-tu une copie quelconque ? Je n'est meme pas regarde votre code.
Cette correction s'applique ainsi a TOUS les programmes kernels... qui se trouve
automatiquement corriges pour l'occasion. Voila l'enorme avantage du format kernel compare au format nostub. 'Doors Explorer' (victime de ce bug) s'en trouve donc corrige.
Existe-t-il un patch pour corriger les programmes nostub 'closed-source' ?
Et quels sont les autres patches que j'ai rajoute ? Qu'est ce qui se cache derriere 'etc' ?
Ensuite libre a l'utilisateur de choisir son kernel, ok. Mais libre au programmeur aussi de choisir un kernel suceptible d'offrir les fonctionnalites dont il a besoin.
Pourquoi ne faites-vous pas aussi un 'MIN_KERNEL' et un 'NO_KERNEL_DETECT' pendant que vous y etes ?
MacIntoc
a écrit : et c nettement plus rare les personnes qui programme en ASM qu'en C, ou en C et en basic, ça veut pas dire que le basic est mieux que le C ou que le C est mieux que l'ASM.
PpHd a écrit :
>Pas parce qu'on "bavait devant les brillantes libraries kernels"
>(au contraire, on ne veut pas que les DLLs _nostub soient utilisées comme ça),
> mais pour permettre de faire des programmes >64 KO.
Il y avait des methodes plu elegantes quand meme. Plus difficiles aussi.
(En cachant totalement 'LoadDLL' du programmeur et le rajouter dans votre startup code tout en ajoutant une table de relogement, bref comme un kernel).
Ca aurait fait exactement ce que vous vouliez
sans en avoir les desavantages.
>qui lui a été créé parce que c'était ce que les programmeurs TI 68k avaient
>l'habitude d'utiliser à l'époque puisque Fargo marchait comme ça,
>et parce que les ROM_CALLs équivalents à des fonctions comme graphlib::clr_scr
>n'étaient pas documentés. Donc c'est bien pour les 2 raisons que j'ai citées. Et pourquoi Fargo a-t-il implante des libs dynamiques alors ?
>>+ Pour eviter d'avoir ce support dans chaque programme.
>Traduction: pour éviter d'avoir l'émulation du fonctionnement de Fargo dans chaque programme.
>>+ Pour mettre a jour facilement le kernel.
>Traduction: pour mettre à jour facilement l'émulateur du format non-natif et inspiré de Fargo qu'est le format kernel.
T'es lourd la. Tres lourd.
Ok je rajouterais peut etre si j'ai le temps un vrai support 'Emulation Fargo' dans preos. Tu seras content la ?
>* Rajout de fonctionnalités aux librairies dynamiques, comme par exemple les numéros de version.
>Une solution bien meilleure au problème de compatibilité des versions est le linkage statique.
>Comme ça, le programme a toujours la version de la librairie pour laquelle il est prévu.
Et si on veut mettre a jour la lib, il faut recompiler le programme, ok je connais.
Mais si on veut mettre a jour les touches d'un jeu qui ne sont pas parfaitement choisis sur une
machine ? Il suffit de mettre a jour genlib, et tu utiliseras les touches optimales pour ta machine. Avec une lib statique, il aurait fallu recompiler chaque programme.
>* Flag "read-only". C'est inutile, les fichiers de données de type personnalisé marchent très bien pour cela. Tellement plus pratique et simple d'emploi.
Tellement transparent aussi.
>Avec des fonctions clippées, on n'a pas besoin d'écrans virtuels plus grands que l'écran. Faux.
PpHd a écrit :
>Tu veux dire quoi là? Qu'ils ferment la fenêtre quand ils ont fini? Ben, ouvre une fenêtre console
>(ou "fenêtre DOS" si tu préfères, ce sont 2 termes pour la même chose, mais "fenêtre console"
> est plus exact) si c'est ça qui te gène. Je prefere qu'ils ne se ferment pas c'est tout. Mais on digresse la.
>Ben, ils abusent de l'allocation de mémoire dans ce cas. Une solution bien meilleure au problème est d'optimiser
>l'allocation de mémoire. Donc:
>- supprimer les listes chaînées! Les remplacer par des tableaus. Quand il n'y a plus de place, il suffit d'utiliser
>HeapRealloc ou realloc. Et pour supprimer dans un tableau tu fais comment ? Ca prend beaucoup de temps...
>- mettre plusieurs variables dans le même bloc. (Les structures sont pratiques pour ça.) Et rajouter une gestion suppression/insertion par forcement evidente a faire.
Tu n'y connais pas grand chose en allocation memoire a ce que je vois
>Et il y a quoi qui empêche au programmeur de faire le même choix lui-même? Le temps de reflexion peut etre.
>Et cela ne risque-t'il pas de bloquer l'horloge?
Non. La lecture des touches ne va pas bloquer l'int 3 pendant plus d'une seconde. Ou alors c'est un plantage.
>La taille n'est pas trop grosse depuis le rajout de la détection de modèle au début du programme.
>Ce sont juste des tst.w __calculator, voire des move.w __calculator,%d1;beq ...
>suivis de tst.w %d1 plus tard. Et si on est dans les premiers 32 KO de _main, ou alors si on utilise
>le switch spécial pour les programmes <32 KO (le switch -l de GNU as),
>GNU as en fera automatiquement une référence PC-relative (__calculator(%PC)).
Faut que je dises a Sebastian de rajouter _IS89_xxxx_yyyy pour le format kernel.
Ca pourra vous etre utile aussi en plus (Ne critiques pas : ce n'est pas un ajout au format, c'est une autre maniere bien plus pratique d'utiliser les EXTRA_RAM_CALLS).
>Moi non. _keytest est plus flexible, et j'aime bien les solutions flexibles.
Tu aimes faire le cafe toi meme. C'est ton choix. Il y a aussi le keyboard encore plus flexible.
>Et si l'ordinal change?
>Là aussi, c'est tout simplement un truc qu'on "ne fait pas", comme pour le changement de nom dans les librairies statiques.
>Je ne vois pas la différence.
Sauf que les noms de fonctions sont beaucoup plus suceptibles de changer que les ordinaux.
Exemple: zlib2. On peut changer les noms sans changer les ordinaux.
>C'est une demi-heure de téléchargement en modem 56k. Il y a bien pire. Le faire tous les jours... Heu non.
>Ah, tu trouves? Moi, je l'aime bien ce format. J'aime les choses simples.
>Les autres formats d'exécutable que j'ai vus (DoorsOS, Windows, ELF etc.) sont lourds. Donc tu ne dois pas t'aimer toi meme : je te trouve lourd parfois.
>Qui n'a rien compris au but des DLL _nostub, dont le but n'est pas de faire des
>DLL pour rien (les 68kL pour stocker les données des jeux, ça c'est des DLL pour rien,
>et ça existe) à la façon kernel, mais de dépasser la limite des 64 KO ? 1. Ca s'appelle pas DLL, mais LIB.
2. Pourquoi une DLL ne contiendrait-elle pas exclusivement des donnees ?
3. C'est tres mal implante.
4. Ca pousse a faire des DLL de fonctions offerte comme c'est.
> On savait depuis
> longtemps que TiMad, Thibaut et d'autres, n'avaient rien compris. Mais je ne savais pas
> que toi non plus, tu n'avais visiblement pas bien compris...
5. J'ai jamais utilise de DLL qui est un format encore plus batard que le _nostub que je critique ouvertement et sans moderation.
Ben, Sebastian et moi, on travaille sur un linkeur, donc ça nous concerne quand-même un peu. Personnellement, j'avais très envie de supprimer le support pour le format kernel avec TIGCC 0.95. Mais pour te calmer: Sebastian l'a déjà implémenté maintenant.
Ah, parce que ça arrive si souvent que ça que TI sort une nouvelle variante de la machine avec les touches à un endroit différent.
Il n'y a eu que 2 telles mises à jour depuis la sortie de la TI-92+:
- TI-89 (1998). Et il n'aurait pas suffi de changer les touches dans ta libraire pour que les programmes soient compatibles, vu qu'il y a aussi l'écran qui est plus petit.
- Voyage 200 (2002, 4 ans plus tard). Statistiquement, la prochaine mise à jour avec un changement important des touches n'est à attendre qu'en 2006.
Pourrais-tu développer? Parce que là, je ne vois pas du tout pourquoi on en aurait besoin.
Ben, moi je présuppose que le programmeur est une personne intelligente, renseignée et diligente. Toi, tu as l'air de présupposer cela même de l'utilisateur, donc le fait que tu ne présupposes pas cela du programmeur m'étonne un peu.