π
<-

[ASM] Hooks

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

[ASM] Hooks

Unread postby 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
User avatar
Clément.7
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 29.5%
 
Posts: 348
Joined: 12 Jun 2013, 15:02
Location: Près de Nantes
Gender: Male
Calculator(s):
MyCalcs profile
Class: IUT Informatique en 2017-2019
GitHub: ClementNerma

Re: [ASM] Hooks

Unread postby 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: Select all
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 ?
Last edited by grosged on 05 Nov 2014, 17:03, edited 1 time in total.
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 32.2%
 
Posts: 773
Images: 92
Joined: 14 Sep 2011, 12:29
Gender: Male
Calculator(s):
MyCalcs profile

Re: [ASM] Hooks

Unread postby 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.
User avatar
matref
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 25%
 
Posts: 506
Joined: 11 Dec 2011, 03:08
Location: France, Châteaurenard
Gender: Male
Calculator(s):
MyCalcs profile
Class: Prépa MPSI

Re: [ASM] Hooks

Unread postby 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)
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 32.2%
 
Posts: 773
Images: 92
Joined: 14 Sep 2011, 12:29
Gender: Male
Calculator(s):
MyCalcs profile

Re: [ASM] Hooks

Unread postby 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 !
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 32.2%
 
Posts: 773
Images: 92
Joined: 14 Sep 2011, 12:29
Gender: Male
Calculator(s):
MyCalcs profile

Re: [ASM] Hooks

Unread postby matref » 05 Nov 2014, 17:42

Franchement je sais plus, il est vieux le code. Tu devrais te référer à la page WikiTI.
User avatar
matref
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 25%
 
Posts: 506
Joined: 11 Dec 2011, 03:08
Location: France, Châteaurenard
Gender: Male
Calculator(s):
MyCalcs profile
Class: Prépa MPSI

Re: [ASM] Hooks

Unread postby grosged » 05 Nov 2014, 17:43

Okay , j' y vais !
merci ;)
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 32.2%
 
Posts: 773
Images: 92
Joined: 14 Sep 2011, 12:29
Gender: Male
Calculator(s):
MyCalcs profile

Re: [ASM] Hooks

Unread postby 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
User avatar
Clément.7
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 29.5%
 
Posts: 348
Joined: 12 Jun 2013, 15:02
Location: Près de Nantes
Gender: Male
Calculator(s):
MyCalcs profile
Class: IUT Informatique en 2017-2019
GitHub: ClementNerma


Return to Langages alternatifs

Who is online

Users browsing this forum: ClaudeBot [spider] and 6 guests

-
Search
-
Social TI-Planet
-
Featured topics
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
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1915 utilisateurs:
>1882 invités
>25 membres
>8 robots
Record simultané (sur 6 mois):
32248 utilisateurs (le 01/09/2025)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)