π
<-

[ASM] Hooks

Assembleur, Axe, C/C++, ICE...

[ASM] Hooks

Messagede Clément.7 » 05 Nov 2014, 13:17

(je demande pas mal de chose ces temps-ci sur le chat et sur le forum parce que je m'intéresse de beaucoup plus près aux TI que j'avais délaissées il y a 2-3 mois)

Bonjour à tous !
J'ai une petite question pour les pros de l'Asm z80 car m'y étant récemment intéressé de près et suivant le tuto de la TIFT (coucou persalteas :D) :

Comment on fait des hooks en assembleur ?
genre un prog qui quand on appuie sur sin( affiche "salut les gens" sur l'écran ?
et comment faire un code qui permet (par exemple quand on appuie sur cos( ) de désactiver ce hook jusqu'à la prochaine exécution du hook asm ?

Merci d'avance !
Toujours plus loin, toujours plus haut, toujours plus geek !
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
Avatar de l’utilisateur
Clément.7
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Prochain niv.: 29.5%
 
Messages: 348
Inscription: 12 Juin 2013, 15:02
Localisation: Près de Nantes
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: IUT Informatique en 2017-2019
GitHub: ClementNerma

Re: [ASM] Hooks

Messagede grosged » 05 Nov 2014, 16:29

Salut!
Il se trouve que ces hooks m'intriguent aussi ! :)
Je ne connais pas grand'chose en hardware,romcalls,...etc concernant les TI,
mais je me débrouille en assembleur Z80.
Afin d'en savoir un peu plus, je me suis donc amusé à désassembler le Hook "Aller à la fin du code avec [2nd][X,t,θ,n]" (éteindre avec [2nd][trace])
( voir viewtopic.php?f=63&t=11790#p139818 )
et ce, grâce a onlinedisassembler.com
ce qui donne ceci:
Image
Puis, je me suis documenté sur les 3 bcall utilisés, grâce à cette page:
http://wikiti.brandonw.net/index.php?ti ... A#mw-pages

Code: Tout sélectionner
ld hl,&9da9      ; adresse de départ du prog à copier
ld de,&8000         ; adresse où seront transférés les
ld bc,25         ; 25 octets
ldir                ; lance la copie
ld hl,&8000         ; adresse du hook
ld a,1          ; page du hook
rst 40         ; BCALL "EnableRawKeyHook"
dw &4f66
ret

db &83         ; marque le début du Hook
bit 2,(iy+1)
ret z
cp &41
jr nz,&9db9        ; sinon , passe à la 2ème partie du prog
rst 40          ; BCALL "DispTail" (part en "queue d'affichage" , donc en fin d'affichage du code basic)
dw &495d
ld a,0
ret

cp &3b        ; (début de la 2ème partie du prog)
ret nz
rst 40              ; BCALL "DisableRawKeyHook"
dw &4f6f
ld a,0
ret


Voilà où j'en suis ...si ça peut t'aider ;)
Quelqu'un pourrait-il modifier/compléter les explications ?
Dernière édition par grosged le 05 Nov 2014, 17:03, édité 1 fois.
Avatar de l’utilisateur
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 32.2%
 
Messages: 773
Images: 92
Inscription: 14 Sep 2011, 12:29
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: [ASM] Hooks

Messagede matref » 05 Nov 2014, 16:34

Ben fallait demander :P c'est moi qui ai fait ce hook.

En fait tout est expliqué là : http://wikiti.brandonw.net/index.php?ti ... ks:By_Name

Et "éteindre" c'est arrêter le hook :P la dernière BCALL c'est _disableRawKeyHook.
Avatar de l’utilisateur
matref
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 25%
 
Messages: 506
Inscription: 11 Déc 2011, 03:08
Localisation: France, Châteaurenard
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Prépa MPSI

Re: [ASM] Hooks

Messagede grosged » 05 Nov 2014, 16:50

En effet, j'aurais gagné du temps ! héhé !
Merci de nous avoir éclairé si rapidement !

Cette page m'a bien aidé aussi :
http://wikiti.brandonw.net/index.php?ti ... s:OS:Hooks
Je me demandais pourquoi il y avait add a,e , je comprends maintenant qu'il faut prendre cet octet &83 comme marqueur de hook !

(je modifie le post tout de suite)
Avatar de l’utilisateur
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 32.2%
 
Messages: 773
Images: 92
Inscription: 14 Sep 2011, 12:29
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: [ASM] Hooks

Messagede grosged » 05 Nov 2014, 17:12

...Quelques petites questions qui me viennent à l'esprit :
-On ne pouvait pas laisser le hook en &9da9 ?
-Avant de quitter, on doit absolument mettre le registre A à zéro? (si oui, pourquoi pas XOR A ?)
(serait-ce par rapport à l'état du clavier contenu dans le registre A ?)
-et ce bit 2,(iy+1) correspond à quoi?
-je me souviens qu'on peut remplacer un CALL...RET par un JP... y a pas une astuce de ce genre concernant les BCALL ?

Merci d'avance !
Avatar de l’utilisateur
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 32.2%
 
Messages: 773
Images: 92
Inscription: 14 Sep 2011, 12:29
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: [ASM] Hooks

Messagede matref » 05 Nov 2014, 17:42

Franchement je sais plus, il est vieux le code. Tu devrais te référer à la page WikiTI.
Avatar de l’utilisateur
matref
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 25%
 
Messages: 506
Inscription: 11 Déc 2011, 03:08
Localisation: France, Châteaurenard
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Prépa MPSI

Re: [ASM] Hooks

Messagede grosged » 05 Nov 2014, 17:43

Okay , j' y vais !
merci ;)
Avatar de l’utilisateur
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 32.2%
 
Messages: 773
Images: 92
Inscription: 14 Sep 2011, 12:29
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: [ASM] Hooks

Messagede Clément.7 » 05 Nov 2014, 17:49

Toujours plus loin, toujours plus haut, toujours plus geek !
Créateur du projet Haskier : Jouer ! Sujet sur OpenClassrooms
Programmez en UnderBasic ! https://tiplanet.org/forum/viewtopic.php?t=19009&p=207260
Avatar de l’utilisateur
Clément.7
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Prochain niv.: 29.5%
 
Messages: 348
Inscription: 12 Juin 2013, 15:02
Localisation: Près de Nantes
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: IUT Informatique en 2017-2019
GitHub: ClementNerma


Retourner vers Langages alternatifs

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Ndless for CX 4.5.5 / CX II 6.2.0
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
12345
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
3019 utilisateurs:
>3002 invités
>11 membres
>6 robots
Record simultané (sur 6 mois):
32248 utilisateurs (le 01/09/2025)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)