1

Ce sujet est issu d'une discussion ayant dérivé sur deux thèmes distincts. Pour vous rendre sur le sujet d'origine, merci de cliquer sur ce lien
avatar
Ben, bouh, quoi :D

2

vala, on va laisser tranquille l'autre topic grin

3

Kevin Kofler (./10029) :
le bridage artificiel n'est pas nouveau du tout

Ca fait penser aux vraies fausses DLLs qu'on ne peut charger simultanément pour empêcher leur usage en tant que vraies vraies DLLs. embarrassed

4

grin
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

5

grin

6

Zerosquare (./10023) :
Certes, mais bon du coup le discours "l'open-source c'est plus sécurisé embarrassed" tombe un peu à plat hehe

Au contraire justement smile
avatar
« Nous avons propagé sur Extranet une histoire fabriquée de toutes pièces selon laquelle une certaine disposition d'étoiles, vue depuis la planète d'origine des butariens, formaient le visage d'une déesse galarienne.
Sans chercher à vérifier ces informations, certains ont décrété que c'était la preuve de l'existence de la déesse. Ceux qui notaient le manque de preuves se faisaient attaquer. »

Legion, geth trolleur à portée galactique

7

Folco (./10031) :
Ca fait penser aux vraies fausses DLLs qu'on ne peut charger simultanément pour empêcher leur usage en tant que vraies vraies DLLs. embarrassed

Non, pour simplifier l'implémentation.
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é

8

« <KK> Nos DLLs sont volontairement limitées à une seule DLL pour éviter l'utilisation en tant que véritables DLLs! »

embarrassed
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

9

si encore c'était une vraie blague, ça aurait pu être drôle tsss

10

C'est encore plus simple de dépendre de HW3Patch, surtout de nos jours (six ans après la sortie de la 89T...), où HW3Patch est "obligatoire" pour les programmes en plusieurs morceaux où il y a des jump / return dans les deux sens (sauf contorsions coûteuses, par exemple appeler à chaque changement de morceau un code de déprotection stocké à 5B00).

!askfork 10030;10031;10032;10033;10034;10035;10036;10037
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

11

Pourtant pstarter etc. se débrouillent très bien sans HW3Patch. J'ai même réussi à coder un kernel qui n'en a pas besoin (TitaniK), mais les programmeurs kernel n'étaient pas intéressés et ont refusé d'adapter leurs programmes (la plupart ne fonctionnaient pas sans modifications: le kernel était en principe compatible avec les kernels habituels (logique, c'était un fork de PreOs), mais des détails liés à la déprotection faisaient que les programmes devaient souvent être patchés ou portés; de plus, il n'y avait pas d'autopatchage pour la Titanium, c'était aux programmes d'être codés proprement) et préféré attendre HW3Patch et Iceberg (lui aussi abandonné parce que PreOs gère maintenant la Titanium, même si je retiens toujours que c'était mieux géré dans Iceberg).
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é

12

et tu te demandes encore pourquoi ça n'a pas pris?

13

Tu parles du code que t'exécutes dans le bas de l'écran, c'est pas ça ? cheeky

14

Bah, les efforts d'adaptation étaient vraiment minimes pour la plupart des programmes, surtout pour l'auteur ou quelqu'un d'autre qui a le code source. J'ai même réussi à adapter 2 jeux dont je n'avais pas le code source. Je comptais sur le support de la communauté kernel pour m'aider avec les portages, il restait à l'époque plusieurs personnes capables de porter des logiciels sans le code source, et il y a aussi pas mal de logiciels ou le code source est fourni. Personne (à part moi) n'a même porté un seul programme pour TitaniK! C'était vraiment décevant. sad (Enfin, d'un autre côté ça confirmait aussi ce que je disais toujours, à savoir que la programmation kernel était, et est toujours, pratiquement morte. tongue)

Je signale aussi que j'ai aussi corrigé SMA pour fonctionner avec Iceberg (c'était un des rares programmes où être compatible avec TitaniK aurait été pour le moins beaucoup plus compliqué, et j'avais déjà pratiquement abandonné TitaniK de toute façon vu le non-intérêt marqué de la communauté, donc j'ai fait l'adaptation pour Iceberg seulement), aussi sans avoir le code source (il n'était pas encore public à l'époque), et diffusé la version corrigée avec l'accord de PpHd (qui aurait pu corriger le problème en 2 minutes, mais qui a préféré me faire faire le travail, sans le code source sick). Il n'avait absolument rien à battre de la Titanium avant PreOs 0.70. sad TitaniK et Iceberg ont longtemps été les seuls kernels pour la Titanium!
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é

15

Kevin Kofler (./15) :
les efforts d'adaptation étaient vraiment minimes pour la plupart des programmes


avec les outils de tes concurrents, les efforts d'adaptation étaient totalement nuls pour la plupart des programmes.

c'est dur le business.

16

Kevin Kofler (./14) :
Je comptais sur le support de la communauté kernel pour m'aider
Autrement dit, les gens que tu n'a eu de cesse de dénigrer pendant des années ? tongue
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

17

Étrange qu'ils n'aient pas été coopératifs confus
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

18

oui, je comprends vraiment pas , c'est surprenant.

19

Folco (./13) :
Tu parles du code que t'exécutes dans le bas de l'écran, c'est pas ça ? cheeky

C'était ma solution pour les handlers d'interruptions (niveaux de gris notamment), parce que le trap #11 est beaucoup trop lent pour se taper 2 déprotections à chaque appel de l'AI1 (à l'appel et au retour, j'avais bien essayé cette solution, mais la calculatrice ne faisait plus que ça et le jeu ne marchait pas!). J'appelais cette zone de mémoire "interrupt handler area". tongue

Mais pour les appels de libs, tout était géré proprement sans aucun code sur l'écran, cette zone était vraiment réservée pour les handlers d'interruptions! Il y avait un appel du trap #11 pour l'appel de la lib et un autre pour le retour au programme principal. (Bien sûr, si tu appelais une lib toutes les 3 instructions, ça ramait à fond, mais en général les jeux ne faisaient de toute façon pas ça!)

Je redirigeais les jsr et jmp vers une lib à travers un "stub" rattaché au client (*) en temps d'exécution qui faisait:
 pea [target]
 pea [server_receiver]
 pea [server_base]
 bra caller

Le "caller" était aussi rattaché au client (*) en temps d'exécution, il s'occupait d'appeler le trap #11 pour déprotéger le serveur (*) et faire en sorte que le trap #11 retourne vers le "receiver" rattaché au serveur (*) en temps d'exécution. Le "receiver" appelait la fonction demandée de la lib, puis tout le procédé de déprotection était répété dans l'autre sens afin de retourner au "caller" du client (*), qui lui retournait à l'endroit qui avait appelé le "stub". Ce qui compliquait le tout était qu'il fallait sauvegarder tous les registres avant d'appeler le trap #11 et les restaurer après, et que, afin de garantir une compatibilité maximale, on ne pouvait absolument rien détruire, même pas %sr.

(*) J'appelle le programme ou la lib appelant "client" et le programme ou la lib appelé "serveur". Le client est souvent un programme et le serveur est en général une lib, mais le système était parfaitement flexible.

Les limitations:
List of known unsupported PreOs features in TitaniK:
* Support for non-Titanium calculators
* Everything requiring a TSR: SHIFT+ON support, AMS error intercepting,
  automatic nostub crash protection, ...
* Crash protection
* Passing command-line parameters to the programs.
* Running _nostub programs through kernel::exec.
* Programs >56 KB.
* Programs/libraries which would require >8 KB of stubs/callers/receivers.
* Programs which require all the RAM. (The stubs take away part of it.)
* Programs which require all the stack. (The stubs need lots of it.)
* The (un)reloc(2) functions won't work if you don't reserve enough room for the
  stubs at the end of the handle (NOT counted in the file size).
* Read-only libraries. (The relocation code adds at least a receiver to all
  libraries. For read-only libraries to work, this has to be skipped for them.)
* Indirect function calls to libraries or to RAM_CALLs.
* Nonstandard or excessive (>60 bytes) stack parameters to libraries or
  RAM_CALLs.
* Archive packs. (Uncompressed files need to be copied to add the stubs,
  compressed ones need TitaniK to call the uncompressor through a receiver.)
* Custom interrupt handlers that survive over a libcall or return-from-lib.
  Anything using interrupt handlers needs to be ported to use the graphlib hack.
* Programs relying on libcalls keeping the keyboard mask intact. (Could be
  fixed by saving/restoring it in the stubs.)

En bref, pratiquement toutes les fonctionnalités des kernels précédant PreOs (genre Universal OS ou TeOS) étaient gérées (sauf l'anticrash, mais TeOS ne l'avait pas non plus), certaines fonctionnalités introduites par PreOs posaient problème (et évidemment les nouveautés de PreOs 0.70 n'y étaient pas parce que TitaniK était un fork de PreOs 0.67, mais de toute façon elles auraient posé pas mal de problèmes et n'auraient probablement pas été supportés: par exemple, les libs conditionnelles impliquent des appels indirects aux fonctions, donc mon heuristique pour distinguer une fonction d'une variable ne les permettait pas), mais les vrais problèmes de compatibilité étaient ailleurs (programmes qui détruisaient la zone d'interruptions en effaçant ou copiant l'écran, programmes qui définissaient leurs propres gestionnaires d'interruptions sans utiliser l'astuce de la zone d'interruptions, programmes qui essayaient d'utiliser 0x40000 (GhostBuster pouvait aider dans certains cas, mais pas toutes les utilisations dans des programmes kernel ne sont pris en compte) etc.).
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é

20

squalyl (./15) :
avec les outils de tes concurrents, les efforts d'adaptation étaient totalement nuls pour la plupart des programmes.

Ces outils n'existaient pas à l'époque! Il n'y avait même pas de HW3Patch (et ça, je peux le dire à coup sûr, parce que c'est moi qui l'ai codé). TitaniK était la seule solution pour faire tourner un programme kernel.
Zerosquare (./16) :
Kevin Kofler (./14) :
Je comptais sur le support de la communauté kernel pour m'aider
Autrement dit, les gens que tu n'a eu de cesse de dénigrer pendant des années ? tongue

Bah, par leur inaction, ils n'ont fait que confirmer ce que je disais au sujet de la mort du kernel. tongue
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

...

J'ai l'impression que tu traites la réalité avec des axiomes vraiment différents de ceux des autres personnes...
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

22

Rappel historique: TitaniK 0.10 permettait les programmes kernel en blanc et noir le 14 février 2004. Les niveaux de gris ont été gérés avec la version 0.11 le 7 avril 2004. La première version de Iceberg, la version 0.90, est sortie le 21 juin 2004. (Il m'a fallu du temps pour trouver quelqu'un en mesure de tester HW3Patch. Les premiers testeurs sur Titanium étaient des bêta-testeurs de TI qui n'avaient aucune envie de patcher leur AMS par peur que TI leur crée des ennuis. Samuel Stearley a été un des premiers à acheter une Titanium en libre commerce quand elle est sortie et il a accepté de tester HW3Patch.) Résultat: presque 3 mois pendant lesquels les jeux auraient pu tourner, mais ne tournaient pas, suite à la paresse des programmeurs kernel.

Quant à PreOs 0.70 avec son fameux autopatcheur, ce n'est sorti que le 27 août 2004, c'est-à-dire plus de 2 mois après Iceberg 0.90 et presque 5 moins après TitaniK 0.11. (De plus, la release 0.70 était très instable et il a fallu du temps pour corriger les régressions. Iceberg était un portage de la version stable 0.67.)

Je signale aussi que j'ai aussi fait mon possible pour faire tourner les vieux programmes avec Iceberg, cf. cette modification du 26 juillet 2004, 1 mois avant PreOs 0.70:
* Added ugly workaround to get programs using the old definitions of
  tios::font_small and tios::font_large, which are no longer valid on the TI-89
  Titanium, to display correctly. (Programs doing custom arithmetic to get those
  offsets, such as Solar Striker, still need to be fixed by hand though.)

(Solar Striker foirait aussi avec PreOs, l'autopatcheur ne peut pas corriger ça non plus.) Mais je ne vois pas pourquoi le kernel devrait faire le travail de GhostBuster, c'est à ça que sert GhostBuster, et si GhostBuster n'est pas en mesure de corriger un problème donné, il faut corriger GhostBuster… Un procédé automatique qui modifie un programme de manière permanente est foireux, que faire si je veux envoyer le programme à une non-Titanium par la suite? GhostBuster permet à l'utilisateur de donner un nom différent au logiciel patché et ainsi garder l'original, et il ne modifie rien sans que l'utilisateur le lui demande explicitement! (Et il est aussi beaucoup plus précis dans ses patches, risquant beaucoup moins de faux positifs, tout en corrigeant aussi des problèmes que l'autopatcheur de PreOs ne sait pas corriger.) De plus, ma solution pour font_small et font_large était plus propre, le dérelogement remettait ça à l'état d'origine, permettant d'exécuter le programme sur une non-Titanium, la solution de PpHd fait que le code ne marche plus que sur Titanium (mais il a refusé d'utiliser mon implémentation sous prétexte que ça prend quelques octets de plus dans le kernel bang).
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é

23

Pourtant pstarter etc. se débrouillent très bien sans HW3Patch.

Je sais bien que pstarter/ttstart est codé exprès pour éviter aux utilisateurs d'avoir, pour pouvoir lancer un programme extérieur qui revient au lanceur, à installer HW3Patch. Mais les plus gros programmes nécessitent de toute façon HW3Patch, puisque virtuellement personne n'a implémenté le code sur la plage 5000-5FFF que tu as décrit en détail plus haut.
Une façon possible de réduire le footprint des pstarters est de virer ce code qui permet de fonctionner sans HW2/3Patch. Et il y a d'ailleurs encore plus efficace pour réduire le footprint des lanceurs en général, mais on en a déjà parlé de nombreuses fois...
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

24

Lionel Debroux (./23) :
le code sur la plage 5000-5FFF que tu as décrit en détail plus haut.

Bon, je répète:
Kevin Kofler (./19) :
Mais pour les appels de libs, tout était géré proprement sans aucun code sur l'écran, cette zone était vraiment réservée pour les handlers d'interruptions!
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é

25

Kevin Kofler (./20) :
Zerosquare (./16) :
Kevin Kofler (./14) :
Je comptais sur le support de la communauté kernel pour m'aider
Autrement dit, les gens que tu n'a eu de cesse de dénigrer pendant des années ? tongue

Bah, par leur inaction, ils n'ont fait que confirmer ce que je disais au sujet de la mort du kernel. tongue

Ils ne font surtout que confirmer que personne n'a envie de bosser avec toi hehe
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

26

flanker (./25) :
Kevin Kofler (./20) :
Zerosquare (./16) :
Kevin Kofler (./14) :
Je comptais sur le support de la communauté kernel pour m'aider
Autrement dit, les gens que tu n'a eu de cesse de dénigrer pendant des années ? tongue

Bah, par leur inaction, ils n'ont fait que confirmer ce que je disais au sujet de la mort du kernel. tongue

Ils ne font surtout que confirmer que personne n'a envie de bosser avec toi hehe

Faux, c'est juste qu'une fois suffit à se faire une idée et à ne pas y revenir. Et ce n'est pas lié à la communauté TI, j'ai lu des archives de discussions Fedora où les gens avaient le même ressenti du sujet.
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

27

Mais pour les appels de libs, tout était géré proprement sans aucun code sur l'écran, cette zone était vraiment réservée pour les handlers d'interruptions!

Que les appels de libs ne soient pas faits à travers 5000-5FFF est une chose (je dois mélanger avec une discussion qu'on avait eue avec "Kimbett" Jeff à propos de Corridor 99), mais justement: comme c'est plus lourd et plus chiant pour le programmeur, et plus lent à l'exécution pour l'utilisateur (d'une quantité dépendant du nombre et de la fréquence des allers-retours), que de simplement faire installer HW3Patch aux utilisateurs, à peu près personne d'autre n'a utilisé des déprotections à chaque changement entre libs.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

28

non mais y'a rien à débattre. un machin qui demande de recompiler des softs pour marcher ne peut avoir aucun succès vu la taille de la logithèque existante!

du coup , les successeurs ont eu du succès en évitant ce pb. point.

29

un machin qui demande de recompiler des softs pour marcher ne peut avoir aucun succès vu la taille de la logithèque existante!

Oui. La communauté TI-68k, en 2004, n'était clairement pas dans la même situation que la communauté Nspire ne l'est actuellement: peu de programmes faits récemment par des auteurs qui sont toujours actifs => il reste assez facile de recompiler les programmes Ndless 1.0/1.1 pour profiter de la relocation et de la couche d'abstraction OS.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

30