180

Tous les autres développeurs

on peut avoir la liste exhaustive s'il te plait.
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

181

Ça a peut-être déjà été dit, mais quels sont les problèmes posés par les ajouts de Flanker (à part le fait qu'il ne t'a pas demandé la permission) ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

182

Vu comment tu as demandé les avis pour ta nouvelle convention sur ezboard...
"je veux des avis"
reponses: Flanker, PpHd, Uther
"bon puisque personne répond tout le monde est d'accord je fais mon truc comme ça me chante"
super la convention neutral
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

183

vince
:
Tous les autres développeurs
on peut avoir la liste exhaustive s'il te plait.

Il y a au moins: Dave Watson, Samuel Stearley, Greg Dietsche, Aghnar, Brian Cairns, Thorsten Kempas. Mais je ne peux pas te garantir que cette liste soit exhaustive, les programmeurs ne sont pas obligés de me demander avant d'implémenter ma convention (tant qu'ils ne veulent pas la modifier).
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é

184

Ximoon :
Vu comment tu as demandé les avis pour ta nouvelle convention sur ezboard...
"je veux des avis"
reponses: Flanker, PpHd, Uther
"bon puisque personne répond tout le monde est d'accord je fais mon truc comme ça me chante"
super la convention neutral

Samuel Stearley a lu le topic et n'a pas objecté (même quand je lui ai demandé directement), donc j'en conclus que la convention 3.00 lui va.
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é

185

Samuel Stearley = tout le monde ? trifus

Sinon, je pense que je suis super lourd et que ça a peut-être déjà été dit plusieurs fois, mais tu peux répondre à ./181 ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

186

Sasume
: Ça a peut-être déjà été dit, mais quels sont les problèmes posés par les ajouts de Flanker (à part le fait qu'il ne t'a pas demandé la permission) ?

Tout le problème est justement là. Je me réserve un droit de véto, parce que sinon, n'importe qui peut rajouter son "pet feature" (sa fonctionnalitée préférée) à la convention, et on passe vite à une convention extrèmement complexe à implémenter (ce qui est déjà pas mal le cas avec tout ce que Flanker a rajouté, d'ailleurs) et avec des incompatibilités entre les ajouts des différents auteurs. Or, pour pouvoir refuser un changement, il faut qu'il soit discuté avant l'implémentation, donc la manière de procéder de Flanker ne me convient pas du tout.
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é

187

Sasume :
Samuel Stearley = tout le monde ? trifus

Tu vois qui d'autre (à part Flanker) encore en train de coder des hooks d'évènements? Moi, je ne vois que Samuel et moi.
Sinon, je pense que je suis super lourd et que ça a peut-être déjà été dit plusieurs fois, mais tu peux répondre à ./181 ?

C'est fait.
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é

188

C'est le seul problème ? Eh bé. T'as pas l'impression de "péter plus haut que ton cul" ?
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

189

et puis, bah que veux-tu que je te dise ? J'en ai rab de la convention d'un petit gars paumé qui se croit le maître et qui veut raconte des conneries à longueur de journée. Les incompatibilités, elles sont juste dans ton uninevhk et c'sest tout.
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

190

Flanker
: C'est le seul problème ? Eh bé. T'as pas l'impression de "péter plus haut que ton cul" ?

Il y a aussi que tes ajouts (je parle surtout des nouveaux pour le mode kernel - et n'aie pas le culot de dire une fois de plus "tu ne les as pas vus", c'est ça le problème!) auraient probablement été refusés si tu avais demandé avant, parce qu'ils sont totalement inutiles et compliquent la convention de manière significative pour rien. Et je te suspecte d'ailleurs d'avoir fait exprès de ne pas demander parce que tu savais que j'allais refuser. Et ben, voilà ce que tu as obtenu: qui demande trop n'a rien, tes autres ajouts ont aussi été supprimés.
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é

191

Et nous on te suspecte d'avoir fait exprès de refuser ses modifications car elles risquaient de permettre des TSR kernels neutral
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

192

Flanker
: et puis, bah que veux-tu que je te dise ? J'en ai rab de la convention d'un petit gars paumé qui se croit le maître et qui veut raconte des conneries à longueur de journée.

Et moi, j'ai marre de te voir, toi, te prendre pour le maître en rajoutant des extensions à la convention sans demander rien à personne (tu n'as pas demandé l'avis de Samuel non plus, par exemple) et en essayant de forcer le reste du monde à te suivre (embrace&extend à la Microsoft)...
Les incompatibilités, elles sont juste dans ton uninevhk et c'sest tout.

Non, c'est toi qui introduis des incompatibilités en fragmentant la convention des hooks d'évènements de la sorte.
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é

193

Flanker> Elle ressemble à quoi ta convention maintenant ?
J'ai du mal à bien me rendre compte de ce que vous débattez.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

194

Ca serait bien d'avoir les deux conventions (celles de Flanker et celles de KK) pour comparer.

195

EVENT HOOK CONVENTIONS RECOMMENDED BY KEVIN KOFLER (document version 3.00)
==========================================================================

ENGLISH:
--------

The following are the conventions required for full compatibility with other event hooks and for compatibility with the UnInEvHk uninstaller:

I) Contents of the event hook
1) At the beginning
* signature: "evHk" (4 bytes).
  Note: The "EvHk" signature with a capital "E" is deprecated and no longer supported by UnInEvHk.
* program name: 8 non-zero bytes (use spaces if you really need padding)
* placeholder for the address of the old event hook (4 bytes), 0 = no old event hook
* save the d3-d7/a2-a6 registers
2) At the end
* check if "old event hook" is non-zero
* if it is non-zero:
- copy the event structure to a2, because TeOS expects it there
- pass the event structure as an argument (on the stack on (a7))
- call it
* restore the d3-d7/a2-a6 registers
* use a normal RTS (RTE is only for interrupts and will NOT work)

II) Installation
* Your installation program MUST be "nostub" (kernel-independent). Kernels will NOT allow installing event hooks reliably and conformingly to this convention.
* I recommend including the HW2 AMS 2 TSR support from: http://ti89prog.kevinkofler.cjb.net
If you do not want to include it, please tell your users that, if their calculator is hardware version 2.00 with Advanced Mathematics Software 2.0x, they need either the HW2Patch by Julien Muchembled, or my HW2 AMS 2 TSR support, or my HW3Patch to run any TSR (except the HW2 AMS 2 TSR support itself) without black bar crashes.
On hardware version 3, the user will ALWAYS need to install my HW3Patch beforehand.
* store EV_hook to the "old event hook" placeholder in the event handler (EV_hook is 0 if there is no event hook installed, so it will automatically fit with my convention without a special treatment for this case.)
* allocate a handle using HeapAllocHigh
* Contrary to what v.1.00 of this document suggested, there is NO need to lock the handle explicitly since HeapAllocHigh does that automatically.
* dereference (HeapDeref) it
* copy the event handler to the locked handle
* add OFFSET+0x10 to the address of the handle:
- OFFSET for HW 2 AMS 2 without HW2Patch (but the HW2 AMS 2 TSR support is needed in that case)
- 0x10 to skip the uninstall information
The value of OFFSET is:
- either 0 or 0x40000 for HW1. It is recommended to use 0x40000 on HW1 for backwards compatibility with old versions of UnInEvHk.
- 0x40000 for HW2. My HW2 AMS 2 TSR support needs this to work.
- 0 for HW3. There is no ghost space at 0x40000 on HW3.
* store the resulting address to EV_hook

III) Uninstallation
Just include my UnInEvHk uninstaller and give me credit. There is no reason for having multiple uninstallers for the same convention.
Make sure you are distributing v.4.00 or higher. Older versions don't support the TI-89 Titanium.

IV) Reserved event types
Event type codes 0x7F00-0x7FFF are reserved for backwards-compatibility with the obsolete event hook convention 2.00. Do NOT use them for ANY purpose.

V) Notes about the usage in C
Always use the "-ffixed-a2" switch (under "Compiler Options" if you are using the TI-GCC IDE) to make sure a2 is not modified (else you would have to restore it manually with some inline assembly).
You might also have to use the "-mpcrel" switch (under "Compiler Options" if you are using the TI-GCC IDE) to make sure the code can be moved. If your program crashes, that's probably the reason. However, the best method is converting your event hook to a hex array to be relocated by your installer. That way, you can have more than one function and use TIGCCLIB calls. For how to do this, take a look at SampleTSR (see below).
Greg Dietsche has written a template for programming event hooks in C called SampleTSR. You can obtain it here: http://calc.gregd.org

FRANÇAIS (FRENCH):
------------------

Les conventions suivantes sont nécessaires pour une compatibilité totale avec d'autres hooks d'évènements et pour la compatibilité avec le programme de désinstallation UnInEvHk:

I) Contenus du hook d'évènements
1) Au début
* signature: "evHk" (4 octets)
  Remarque: La signature "EvHk" avec un "E" majuscule est obsolète et n'est plus acceptée par UnInEvHk.
* nom du programme: 8 octets non nuls (utilisez des espaces si vous avez vraiment besoin d'un remplissage)
* place réservée pour l'adresse du vieux hook d'évènements (4 octets), 0 = aucun vieux hook d'évènements
* sauvegarder les registres d3-d7/a2-a6
2) À la fin
* vérifier si "vieux hook d'évènements" est non nul
* s'il est non nul:
- copier la structure d'évènements vers a2, parce que TeOS l'attend là
- passer la structure d'évènements comme un argument (sur la pile en (a7))
- l'appeler
* restaurer les registres the d3-d7/a2-a6
* utiliser un RTS normal (RTE est selement pour les interruptions et NE marchera PAS)

II) Installation
* Votre programme d'installation DOIT être "nostub" (indépendant des kernels). Les kernels NE permettent PAS d'installer les hooks d'évènements de manière fiable et conforme à cette convention.
* Je conseille d'inclure le HW2 AMS 2 TSR support sur: http://ti89prog.francais.kevinkofler.cjb.net
Si vous ne voulez pas l'inclure, veuillez dire à vos utilisateurs que, si leur calculatrice a pour version matérielle 2.00 et pour version de Advanced Mathematics Software 2.0x, alors ils auront besoin soit du HW2Patch de Julien Muchembled, soit de mon HW2 AMS 2 TSR support, soit de mon HW3Patch pour exécuter tout programme résident en mémoire (sauf le HW2 AMS 2 TSR support lui-même) sans plantages avec barre noire.
Sur la version matérielle 3, l'utilisateur devra TOUJOURS installer mon HW3Patch avant.
* sauvegarder EV_hook vers la place réservée pour le "vieux hook d'évènements" dans la routine manipulatrice d'évènements (EV_hook est 0 s'il n'y a aucun hook d'évènements installé, donc ma convention sera automatiquement respectée sans traîtement spécial pour ce cas-là.)
* allouer un bloc mémoire en utilisant HeapAllocHigh
* Contrairement à ce que la v.1.00 de ce document suggérait, il N'est PAS nécessaire de verrouiller le bloc explicitement parce que HeapAllocHigh le fait automatiquement.
* le déréférencer (HeapDeref)
* copier la routine manipulatrice d'évènements vers le bloc verrouillé
* ajouter OFFSET+0x10 à l'adresse du bloc:
- OFFSET pour HW 2 AMS 2 sans HW2Patch (mais le HW2 AMS 2 TSR support est nécessaire dans ce cas)
- 0x10 pour sauter les informations pour la désinstallation
La valeur de OFFSET est de:
- 0 ou 0x40000 sur HW1. Il est recommandé d'utiliser 0x40000 sur HW1 pour la compatibilité antérieure avec les vieilles versions de UnInEvHk.
- 0x40000 sur HW2. Mon HW2 AMS 2 TSR support nécessite cela pour fonctionner.
- 0 sur HW3. Il n'y a pas d'espace fantôme à 0x40000 sur HW3.
* mémoriser l'adresse résultante en EV_hook

III) Désinstallation
Incluez simplement mon programme de désinstallation UnInEvHk et donnez moi le crédit nécessaire. Il n'y aucune raison pour avoir plusieurs programmes de désinstallation pour la même convention.
Vérifiez que vous êtes en train de distribuer la v.4.00 ou supérieure. Les versions antérieures ne gèrent pas la TI-89 Titanium.

IV) Types d'évènements réservés.
Les numéros d'évènement 0x7F00-0x7FFF sont réservés pour la compatibilité avec la convention de hooks d'évènements dépassée 2.00 et NE sont à destiner à AUCUN usage.

V) Remarques sur l'usage en C
Utilisez toujours l'option "-ffixed-a2" (sous "Compiler Options" si vous utilisez TI-GCC IDE) pour être sûr que a2 n'est pas modifié (sinon vous devriez le restaurer manuellement avec de l'assembleur inline).
Vous pourriez en plus avoir besoin de l'option "-mpcrel" (sous "Compiler Options" si vous utilisez TI-GCC IDE) pour être sûr que le code peut être déplacé. Si votre programme plante, la raison est probablement là. Cependant, la meilleure solution est de convertir votre hook d'évènements en un tableau hexadécimal à réallouer par votre installeur. Ceci vous permettra d'avoir plus d'une fonction et d'utiliser des appels à TIGCCLIB. Pour savoir comment le faire, veuillez jeter un coup d'oeil sur SampleTSR (voir ci-dessous).
Greg Dietsche a créé un programme exemple appelé SampleTSR pour écrire des hooks d'évènements en C. Il est disponible ici: http://calc.gregd.org
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é

196

Et au cas où certains auraient envie de le lire sans devoir scroller à chaque ligne :
EVENT HOOK CONVENTIONS RECOMMENDED BY KEVIN KOFLER (document version 3.00)
==========================================================================

FRANÇAIS (FRENCH):
------------------

Les conventions suivantes sont nécessaires pour une compatibilité totale avec d'autres hooks d'évènements et pour la compatibilité avec le programme de désinstallation UnInEvHk:

I) Contenus du hook d'évènements
1) Au début
* signature: "evHk" (4 octets)
Remarque: La signature "EvHk" avec un "E" majuscule est obsolète et n'est plus acceptée par UnInEvHk.
* nom du programme: 8 octets non nuls (utilisez des espaces si vous avez vraiment besoin d'un remplissage)
* place réservée pour l'adresse du vieux hook d'évènements (4 octets), 0 = aucun vieux hook d'évènements
* sauvegarder les registres d3-d7/a2-a6
2) À la fin
* vérifier si "vieux hook d'évènements" est non nul
* s'il est non nul:
- copier la structure d'évènements vers a2, parce que TeOS l'attend là
- passer la structure d'évènements comme un argument (sur la pile en (a7))
- l'appeler
* restaurer les registres the d3-d7/a2-a6
* utiliser un RTS normal (RTE est selement pour les interruptions et NE marchera PAS)

II) Installation
* Votre programme d'installation DOIT être "nostub" (indépendant des kernels). Les kernels NE permettent PAS d'installer les hooks d'évènements de manière fiable et conforme à cette convention.
* Je conseille d'inclure le HW2 AMS 2 TSR support sur: http://ti89prog.francais.kevinkofler.cjb.net
Si vous ne voulez pas l'inclure, veuillez dire à vos utilisateurs que, si leur calculatrice a pour version matérielle 2.00 et pour version de Advanced Mathematics Software 2.0x, alors ils auront besoin soit du HW2Patch de Julien Muchembled, soit de mon HW2 AMS 2 TSR support, soit de mon HW3Patch pour exécuter tout programme résident en mémoire (sauf le HW2 AMS 2 TSR support lui-même) sans plantages avec barre noire.
Sur la version matérielle 3, l'utilisateur devra TOUJOURS installer mon HW3Patch avant.
* sauvegarder EV_hook vers la place réservée pour le "vieux hook d'évènements" dans la routine manipulatrice d'évènements (EV_hook est 0 s'il n'y a aucun hook d'évènements installé, donc ma convention sera automatiquement respectée sans traîtement spécial pour ce cas-là.)
* allouer un bloc mémoire en utilisant HeapAllocHigh
* Contrairement à ce que la v.1.00 de ce document suggérait, il N'est PAS nécessaire de verrouiller le bloc explicitement parce que HeapAllocHigh le fait automatiquement.
* le déréférencer (HeapDeref)
* copier la routine manipulatrice d'évènements vers le bloc verrouillé
* ajouter OFFSET+0x10 à l'adresse du bloc:
- OFFSET pour HW 2 AMS 2 sans HW2Patch (mais le HW2 AMS 2 TSR support est nécessaire dans ce cas)
- 0x10 pour sauter les informations pour la désinstallation
La valeur de OFFSET est de:
- 0 ou 0x40000 sur HW1. Il est recommandé d'utiliser 0x40000 sur HW1 pour la compatibilité antérieure avec les vieilles versions de UnInEvHk.
- 0x40000 sur HW2. Mon HW2 AMS 2 TSR support nécessite cela pour fonctionner.
- 0 sur HW3. Il n'y a pas d'espace fantôme à 0x40000 sur HW3.
* mémoriser l'adresse résultante en EV_hook

III) Désinstallation
Incluez simplement mon programme de désinstallation UnInEvHk et donnez moi le crédit nécessaire. Il n'y aucune raison pour avoir plusieurs programmes de désinstallation pour la même convention.
Vérifiez que vous êtes en train de distribuer la v.4.00 ou supérieure. Les versions antérieures ne gèrent pas la TI-89 Titanium.

IV) Types d'évènements réservés.
Les numéros d'évènement 0x7F00-0x7FFF sont réservés pour la compatibilité avec la convention de hooks d'évènements dépassée 2.00 et NE sont à destiner à AUCUN usage.

V) Remarques sur l'usage en C
Utilisez toujours l'option "-ffixed-a2" (sous "Compiler Options" si vous utilisez TI-GCC IDE) pour être sûr que a2 n'est pas modifié (sinon vous devriez le restaurer manuellement avec de l'assembleur inline).
Vous pourriez en plus avoir besoin de l'option "-mpcrel" (sous "Compiler Options" si vous utilisez TI-GCC IDE) pour être sûr que le code peut être déplacé. Si votre programme plante, la raison est probablement là. Cependant, la meilleure solution est de convertir votre hook d'évènements en un tableau hexadécimal à réallouer par votre installeur. Ceci vous permettra d'avoir plus d'une fonction et d'utiliser des appels à TIGCCLIB. Pour savoir comment le faire, veuillez jeter un coup d'oeil sur SampleTSR (voir ci-dessous).
Greg Dietsche a créé un programme exemple appelé SampleTSR pour écrire des hooks d'évènements en C. Il est disponible ici: http://calc.gregd.org

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

197

je pense me baser sur celle-là
Convention d'événements Ho0k 
25/05/2004 (c) Matthieu Gallet (Flanker)

Description du standard HooK de hooks d'événements. Le respect de celui-ci permet des interactions entre différents HooK et l'usage d'un unique désinstalleur pour tous les HooK.
Ce format est conçu pour permettre l'emploi de la majorité des fonctionnalités des programmes kernel : relogements, BSS, exportations de bibliothèques, ROM_CALL, RAM_CALL...
L'importations des bibliothèques dynamiques traditionnelles est malheureusement impossible, mais l'importations de bibliothèques dynamiques en TSR est possible !

1) Au niveau binaire :
 * le hook doit correspondre à un bloc mémoire (handle). Le numéro de ce handle est le TsrId du HooK.
 * Le bloc doit avoir la structure suivante :
	Offset	Taille	Valeur		Commentaire
	0	4	0x486F306B 	0x486f306B = "Ho0k". Ceci joue le rôle de signature afin d'identifier un bloc mémoire comme étant un HooK
	4	8	?		Il faut mettre le nom du programme. Au besoin, le compléter avec des 0 pour faire 8 caractères exactement
	12	4	?		Valeur de la variable globale EV_Hook avant sa modification. Ceci permet de maintenir une liste chaînée des Hooks d'événements installés
	16	2	x		offset vers la table d'exportation =0 si pas de table
	18	2	y		offset vers la table d'importation =0 si pas de table
	20	?	?		Code du hook d'événement, qui sera appelé par le TIOS.
	x	2+2n	?		1er word : nombre de fonctions exportées, puis liste des offsets
	y	2+8n	?		1er word : nombre de libs nécessaires, puis liste des noms des libs

Petit détail (merci Pollux ^^). Comme l'adresse à l'offser 12 est en fait codée sur 24bits (68000 oblige), on peut considérer que le nom est une chaîne C normale, terminée par 0.
2) Au niveau du Ho0k lui-même :
 * Le seul paramètre de la fonction Hook d'événement est un pointeur vers une structure d'EVENT.
 * Les registres a2-a7 et d3-d7 doivent être impérativement restaurés quand on quitte le TSR
 * Le hook doit appeller l'ancien hook, en lui passant le pointeur vers l'EVENT par la pile ET en le mettant dans a2 (pour des raisons de compatibilité)


3) Au niveau de l'installation :
 Il suffit de recopier la structure décrite dans un bloc alloué grâce à HeapAllocHigh au 1), puis de mettre dans la variable globale EV_Hook l'adresse du bloc + 0x40010.
Le 0x10, c'est parce que le code de la fonction est après le header de 16octets
Le 0x40000, c'est pour des raisons de protection matérielle.
Le HeapAllocHigh permet d'allouer un bloc verrouillé (pour qu'il ne bouge pas) en mémoire haute (pour ne pas gêner la défragmentation de la RAM)


4) Désinstallation :
La désinstallation est un peu plus complexe, mais offre l'avantage qu'un seul programme peut désinstaller tous les Hook (c'est un des buts du standard).
UnHook fait très bien l'affaire, il suffit de l'inclure.


5) Evénements non utilisés par l'AMS
Pour offrir de nouvelles possibilités aux Hook, quelques événements ont été rajoutés.
Ils ne doivent pas être envoyés via la commande EV_sendEvent, mais directement au Hook.


a) CM_EVHK_IS_PRESENT (0x7FFA)

Cet Event va permettre de détecter la présence d'un Hook particulier, même si on ne peut pas parcourir la liste chaînée.

Structure EVENT à envoyer:
Offset  Taille  Nom          Valeur initiale
0       2       Type         $7FFA
2       2       RunningApp   0
4       2       Side         sans importance
6       2       StatusFlags  sans importance
8       4       pasteText    pointeur vers le nom du hook (exactement 8 caractères), qui ne doit pas nécessairement être terminé par un '\0'

La réponse du Hook doit être le remplacement de RunningApp par le numéro du handle du hook si le nom correspond.
RunningApp reste à 0 si aucun hook n'a répondu (et donc le hook recherché est absent).
Si votre hook n'est pas censé interagir avec d'autres programmes, gérer CM_EVHK_IS_PRESENT n'est pas super utile.

b) CM_EVHK_CAN_DELETE (0x7FFF)

Vérifie si un hook peut être effacé ou non. Un désinstalleur DOIT envoyer cet évènement avant de commencer l'effaçage.

Structure EVENT à envoyer:
Offset  Taille  Nom          Valeur initiale
0       2       Type         $7FFF
2       2       RunningApp   handle du hook à effacer
4       2       Side         sans importance
6       2       StatusFlags  sans importance
8       2       hpasteText   1

Le hook doit mettre hPasteText à 0 s'il ne peut pas être effacé, et ne RIEN faire sinon.
N'importe quel hook peut réagir à cet évènement, pas seulement le hook dont l'effaçage est demandé.
Un hook peut ainsi empêcher l'effaçage d'un autre hook dont il dépend.

c) CM_EVHK_DELETE (0x7FFE)

Permet d'annoncer au hook de handle RunningApp qu'il va être effacé
Prépare l'effaçage d'un hook. Un désinstalleur DOIT envoyer cet évènement avant de supprimer un hook, et il DOIT avoir envoyé CM_EVHK_CAN_DELETE (0x7FFF) et vérifié son résultat auparavant.

Structure EVENT à envoyer:
Offset  Taille  Nom          Valeur initiale
0       2       Type         $7FFE
2       2       RunningApp   handle du hook à effacer
4       2       Side         sans importance
6       2       StatusFlags  sans importance
8       4       pasteText    pointeur vers la fonction DeleteEventHook

La fonction DeleteEventHook:
prototype: void DeleteEventHook(HANDLE handle asm("d0"));
détruit: d0-d2/a0-a1
Cette fonction est exportée par UnInEvHk pour permettre à un hook de se désinstaller quand un hook duquel il dépend est désinstallé. DeleteEventHook:
(i) envoie CM_EVHK_CAN_DELETE au hook dont le handle est donné et vérifie le résultat,
(ii) envoie CM_EVHK_DELETE au hook dont le handle est donné,
(iii) efface le hook et
(iv) continue l'exécution en envoyant CM_EVHK_DELETE à partir du hook qui SUIT le hook qu'on vient d'effacer dans la liste chaînée.
DeleteEventHook NE retourne QU'en cas d'erreur (hook introuvable dans la liste chaînée ou qui refuse à travers CM_EVHK_CAN_DELETE d'être effacé). En cas de succès, l'adresse de retour se trouve dans un handle effacé et la fonction ne peut donc pas y retourner. Cela explique aussi l'absence de valeur de retour.

Réponse du hook:
Suppression de toutes structures internes au hook autres que le handle lui-même, par exemple des handles supplémentaires alloués.
Un hook peut aussi réagir à la suppression d'un autre hook, par exemple en appelant DeleteEventHook.

ATTENTION: Ceci n'est pas nécessairement le dernier évènement reçu par le hook à effacer. Des évènements supplémentaires peuvent être enclenchés par l'appel de DeleteEventHook par un autre hook, par exemple.

d) CM_EVHK_ICON (0x7FFD)

Permet d'obtenir une icône de la part du hook (pour faire joli dans un shell, par exemple)

Structure EVENT à envoyer:
Offset  Taille  Nom          Valeur initiale
0       2       Type         $7FFD
2       2       RunningApp   handle du hook
4       2       Side         sans importance
6       2       StatusFlags  sans importance
8       4       pasteText    0 (NULL)

Réponse du hook:
Remplacement de pasteText par un pointeur vers une icône.


e) CM_EVHK_ABOUT (0x7FFC)

Permet d'obtenir une chaîne d'informations au sujet d'un hook.

Structure EVENT à envoyer:
Offset  Taille  Nom          Valeur initiale
0       2       Type         $7FFC
2       2       RunningApp   handle du hook
4       2       Side         sans importance
6       2       StatusFlags  sans importance
8       4       pasteText    0 (NULL)

Réponse du hook:
Remplacement de pasteText par un pointeur vers une chaîne de caractères (d'informations).

f) CM_EVHK_INSTALL (0x7FFB)

Permet de signaliser l'installation d'un hook, pour que d'autres hooks puissent y répondre. Doit être envoyé APRÈS l'installation du hook.

Structure EVENT à envoyer:
Offset  Taille  Nom          Valeur initiale
0       2       Type         $7FFB
2       2       RunningApp   handle du hook
4       2       Side         sans importance
6       2       StatusFlags  sans importance
8       4       pasteText    0 (NULL)

Réponse du hook:
Aucune réponse nécessaire.

g) CM_EVHK_CMD_0 (0x7F00) - CM_EVHK_CMD_127 (0x7F7F)

Ces événements ne sont pas utilisés par l'AMS et peuvent donc être utilisés pour envoyer des événements personnalisés à des hook

Structure EVENT à envoyer:
Offset  Taille  Nom          Valeur initiale
0       2       Type         $7F00 - $7F7F
2       2       RunningApp   handle du hook
4       2       Side         spécifié par le hook
6       2       StatusFlags  spécifié par le hook
8       2       hpasteText   spécifié par le hook




en rajotutant l'event Kernel_uninstal, touours facultatif, en changeant la signature (à cause du changement de convention). Le format sera commun aux TSR Ev_Hook et aux autres types de TSR (qui changent un trap, par exemple), ça ne coûte presque rien et ça permet d'éviter d'avoir un désinstalleur supplémentaire.
Le format permet ainsi, sans aucune autre modificiation, l'utilisation de RAM_CALL, bss, et autres fonctions proposées par le kernel, bref tout sauf l'importation / exportation de libs dynamiques.
Là où ce n'est pas réglé du tout, c'est l'importation / exportation des libs dynamique
- soit j'interdis (mais neutral je trouve)
- soit je fais en sorte que les libs dynamiques soient classiques, dans ce cas il faudrait interdire le déchargement après la fin du programme (pour les libs concernées)
- soit seuls des TSR déjà installés peuvent être utilisés comme des libs dans le code du TSR, avec un relogement mélangé avec le relogement standard (avec un flag disant que c'est pas une lib standard)
- soit je fais une table d'importation à part, relogée à l'installation par ma lib d'installtion (mais dans ce cas, le code du TSR ne sera pas utilisable quand le programme voudra faire autre chose)
- pour les exportations, soit j'utiilise la table d'exportation actuelle, en ne marquant dans le TSR que les fonctions exportées
donc dans certains cas, il faudrait que je vois avec PpHd ce qui est possible (vu qu'une partie du taf se trouverait dans le kernel)
je crois que c'est à peu près tout
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

198

Je te signale que tu es en violation de mes droits d'auteur en utilisant une version modifiée de ma convention. Tu dois tout réécrire!
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é

199

elle est modifiée où ?
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

200

Tes ajouts la modifient. Et même si tu ne la modifies pas, ton utilisation est abusive. Je n'ai mis aucune licence permettant à n'importe qui de redistribuer le document, donc j'ai parfaitement le droit de te l'interdire.
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é

201

Mais tu veux qu'il fasse comment ?
Si des choses sont semblables, il ne va pas tout réécrire ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

202

./197: Je te previens : je veux etre informe a l'avance (hehe) et j'aimerais eviter d'avoir 8 signatures...

203

bah j'ai arrêté de t'embêter avec vu que j'ai d'auters choses à finir en même temps (qui a dit un ch et un sh ?), mais justement, faudrait qu'on en cause un peu ^^
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

204

Ce que j'ai dit reste valable. Je veux etre informe sur ch et sh tongue

205

[Troll et attaques personnelles enlevés]
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é

206

Ça, ce n'est pas gagné avec lui...
t'inquiète, PpHd sera informé à l'avance. Toi, je sais pas ...
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

207

Je précise pour les signatures: Ma manière de procéder est de réfléchir d'abord à une bonne convention, afin d'éviter de devoir changer des trucs et ainsi introduire une nouvelle signature. Flanker fait exactement le contraire malheureusement. Et, juste en passant, je ne vois pas en quoi l'ajout d'évènements facultatifs nécessiterait une nouvelle signature. Mais tu fais ce que tu veux maintenant...
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é

208

bah ta signature est ©
en plus,je peux réserver 4o pour les importations / exportations sans les définir, vuq eu de toute façon si elles sont implémentées il y a aura des offsets vers des tables,comme dans le format kernel
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

209

[edit à la demande de Ximoon] : allusions assimilables à des trolls virées

une fois de plus, faites ce que je dis, pas ce que je fais... roll
Kevin Kofler :
Je précise pour les signatures: Ma manière de procéder est de réfléchir d'abord à une bonne convention, afin d'éviter de devoir changer des trucs et ainsi introduire une nouvelle signature. Flanker fait exactement le contraire malheureusement. Et, juste en passant, je ne vois pas en quoi l'ajout d'évènements facultatifs nécessiterait une nouvelle signature. Mais tu fais ce que tu veux maintenant...

penser un truc avant de coder, c'est bien, mais bon, si c'est pour imposer son idée sans rien coder de réellement performant(ie : optimisé en taille, vitesse et qualité de programmation, sisi les 3 sont conciliables, c'est comme ça qu'on distingue les bons programmeurs des grandes gueules) ça vaut pas la peine... Que Flanker n'ait peut-être pas assez causé de son point de vue de l'implémentation de ton draft, ça ne regarde que lui je dirais(et encore je suis pas allé lire ezboard). Maintenant, il code, ça rends service a des gens qui ne savent pas en faire autant, ça reste du "hobby" donc je vois pas pkoi il irait se viander par terre parcque monsieur Kevin Kofler, auteur du draft a décidé de lui mettre des batons dans les roues (pour le punir de penser Kernel ? qu'est-ce que c'est petit dis moi...)
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

210

Vince> tu peux éviter les deux premiers trolls s'il te plait, ça n'a pas trop sa place dans ce topic, merci smile
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.