π
<-

ASM Mimas

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

Re: ASM Mimas

Unread postby Epharius » 27 Jun 2016, 15:51

Non non, un hook n'a aucune raison d'appeler un autre hook. Ce que tu devrais faire si tu es prêt à activer deux hooks, c'est de créer :
- GetCSCHook : quand l'utilisateur appuie sur Enter quand on est dans le menu d'édition des programmes, on récupère le premier caractère du programme et si c'est "!", alors on met 1 dans un flag. Si ce n'est pas "!", alors on met 0 dans ce flag.
- TokenHook : Si ce flag est à 1, alors on exécute le code qui remplace les tokens. Si ce flag est à 0, alors on quitte ce hook.
Tout simplement ! Les deux hooks interagissent par l'intermédiaire des flags. Tu as des flags qui ne sont pas utilisés par l'OS, sers-en toi.
Le projet Geometry Dash est terminé ! N'hésitez pas à aller jeter un coup d’œil au topic du projet ! Vous pouvez le télécharger ici.

Unis par la flèche sacrée de cupidon :favorite:
Image
User avatar
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 8.7%
 
Posts: 1172
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ensimag
GitHub: MathisLav

Re: ASM Mimas

Unread postby Ti64CLi++ » 27 Jun 2016, 15:52

Et comment je choisis le flag? Il ne faut pas que cela "gène" ;)
Image
User avatar
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 32.5%
 
Posts: 3446
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
MyCalcs profile
Class: ENS Rennes
GitHub: Ti64CLi

Re: ASM Mimas

Unread postby Epharius » 27 Jun 2016, 15:54

Ce flag ne gênera pas :
- Il est utilisé en tant que hook, c'est-à-dire en plein milieu de l'OS. L'OS ne touche jamais à ces flag là (ils s'appellent asm_flag dans ton include).
- Même si un programme assembleur l'utilise, ce flag est automatquement mis à la valeur qui te correspond dans le getCSCHook
Le projet Geometry Dash est terminé ! N'hésitez pas à aller jeter un coup d’œil au topic du projet ! Vous pouvez le télécharger ici.

Unis par la flèche sacrée de cupidon :favorite:
Image
User avatar
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 8.7%
 
Posts: 1172
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ensimag
GitHub: MathisLav

Re: ASM Mimas

Unread postby Ti64CLi++ » 27 Jun 2016, 16:01

Ok, merci je teste
Mais donc il faut que je créer deux programmes? Il n'est pas possible de créer deux hooks dans un même programme?
Image
User avatar
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 32.5%
 
Posts: 3446
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
MyCalcs profile
Class: ENS Rennes
GitHub: Ti64CLi

Re: ASM Mimas

Unread postby Epharius » 27 Jun 2016, 16:10

Si totalement, tu actives le premier avec le code qui correspond puis le deuxième avec le code qui correspond, tu peux même mettre les deux hooks à la suite dans $8000.
Le projet Geometry Dash est terminé ! N'hésitez pas à aller jeter un coup d’œil au topic du projet ! Vous pouvez le télécharger ici.

Unis par la flèche sacrée de cupidon :favorite:
Image
User avatar
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 8.7%
 
Posts: 1172
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ensimag
GitHub: MathisLav

Re: ASM Mimas

Unread postby Ti64CLi++ » 27 Jun 2016, 20:32

Et comment je peux connaître la taille d'un code sans avoir à faire un .echo?
Image
User avatar
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 32.5%
 
Posts: 3446
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
MyCalcs profile
Class: ENS Rennes
GitHub: Ti64CLi

Re: ASM Mimas

Unread postby Ti64CLi++ » 28 Jun 2016, 13:43

Bon alors le code ne marche pas. Il désactive les apps, nécessitant d'envoyer une liste ou n'importe quoi d'autres pour les activées, et lorsque j'appuie sur un menu, par exemple le menu mémoire avec 2nd puis +, et bien cela m'affiche le menu PRGM sous forme d'affichage de texte, je ne peux pas changer d'options en haut comme EDIT ou NEW car cela n'est même pas afficher, et je ne peux pas choisir de programme, et ne peux donc désactiver ce programme :(
Voilà le code de MenuHook:
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
;#SECTION "MAIN", CODE

   org   userMem - 2
   db   0BBh, 6Dh
Start:
   ld   hl, PrgmEditHook
   ld   de, 8265h
   ld   bc, EndHook - PrgmEditHook + 1
   ldir
   ld   hl, 8265h
   ld   a, 1
   B_CALL   5083h
   ret

PrgmEditHook:
   db   83h
   cp   04h
   ret   nz
   ld   a, (MenuCurrent)
   cp   mProgramHome
   ret   nz
   ld   a, (MenuCurrent + 1)
   cp   mPrgm_Edit
   ret   nz
   ld   hl, -9
   add   hl, de
   B_CALL   _Mov9ToOP1
   ld   a, ProgObj
   ld   (OP1), a
   B_CALL   _ChkFindSym
   inc   de
   inc   de
   ld   hl, tFact
   or   a
   sbc   hl, de
   ret   nz
   set   0, (iy + 22h)
   ret

EndHook:
;#IMPORT "TOKENS"
;#IMPORT "MENUCURR"


Le code de l'include MENUCURR:
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
;#SECTION "MAIN", CODE

mConfirmation equ   01h
mApps equ   02h
mProgramHome equ   03h
mPrgm_Run equ   00h
mPrgm_Edit equ   01h
mPrgm_New equ   02h
mZoom equ   04h
mZoom_Zoom equ   00h
mZoom_Memory equ   01h
mDraw equ   05h
mDraw_Draw equ   00h
mDraw_Points equ   01h
mDraw_Store equ   02h
mStatPlots equ   06h
mStat equ   07h
mStat_Edit equ   00h
mStat_Calc equ   01h
mStat_Tests equ   02h
mMath equ   08h
mMath_Math equ   00h
mMath_Number equ   01h
mMath_Complex equ   02h
mMath_Prob equ   03h
mTest equ   09h
mTest_Test equ   00h
mTest_Logic equ   01h
mVars equ   0Bh
mVars_Vars equ   00h
mVars_YVars equ   01h
mMemory equ   0Ch
mMatrix equ   0Dh
mMatrix_Name equ   00h
mMatrix_Math equ   01h
mMatrix_Edit equ   02h
mDistr equ   0Eh
mDistr_Distr equ   00h
mDistr_Draw equ   01h
mAngle equ   0Fh
mList equ   10h
mList_Names equ   00h
mList_Ops equ   01h
mList_Math equ   02h
mCalculate equ   11h
mVarsWin equ   14h
mVarsWin_XY equ   00h
mVarsWin_TTh equ   01h
mVarsWin_UVW equ   02h
mVarsZoom equ   15h
mVarsZoom_ZXY equ   00h
mVarsZoom_ZT equ   01h
mVarsZoom_UVW equ   02h
mVarsGDB equ   16h
mVarsPics equ   17h
mVarsStrings equ   18h
mVarsStat equ   19h
mVarsStat_XY equ   00h
mVarsStat_Sigma equ   01h
mVarsStat_EQ equ   02h
mVarsStat_Test equ   03h
mVarsStat_Pts equ   04h
mVarsTable equ   1Ah
mVarsYEqu equ   1Bh
mVarsParametric equ   1Ch
mVarsPolar equ   1Dh
mVarsFnOnOff equ   1Eh
mMemReset equ   1Fh
mMemReset_RAM equ   00h
mMemReset_ROM equ   01h
mMemReset_All equ   02h
mMemMgmtDel equ   20h
mMemResetDefaults equ   21h
mMemResetRAMAll equ   23h
mMemResetROMVars equ   24h
mMemResetROMApps equ   25h
mMemResetROMAll equ   26h
mMemResetAll equ   27h
mGroup equ   28h
mGroup_New equ   00h
mGroup_Ungroup equ   01h
mGroupVars equ   29h
mProgramEdit equ   2Ah
mPrgmEd_Ctrl equ   00h
mPrgmEd_IO equ   01h
mPrgmEd_Exec equ   02h
mPrgmZoom equ   2Bh
mPrgmZoom_Zoom equ   00h
mPrgmZoom_Mem equ   01h
mPrgmDraw equ   2Ch
mPrgmDraw_Draw equ   00h
mPrgmDraw_Pt equ   01h
mPrgmDraw_Store equ   02h
mPrgmStatPlot equ   2Dh
mPrgmSP_Plots equ   00h
mPrgmSP_Type equ   01h
mPrgmSP_Mark equ   02h
mPrgmStat equ   2Eh
mPrgmStat_Edit equ   00h
mPrgmStat_Calc equ   01h
mPrgmStat_Tests equ   02h
mPrgmMath equ   2Fh
mPrgmMath_Math equ   00h
mPrgmMath_Num equ   01h
mPrgmMath_Cplx equ   02h
mPrgmMath_Prob equ   03h
mLink equ   30h
mLink_Send equ   00h
mLink_Recieve equ   01h
mLinkTrasmit equ   31h
mLinkXmit_Xmit equ   01h
mGarbageCollect equ   3Fh
mSelectGroupVars equ   40h
mSelGrpVars_Sel equ   00h
mSelGrpVars_Grp equ   01h
mDuplicateName equ   42h
mCatalog equ   45h
mFinance equ   22h
mFinance_Calc equ   00h
mFinance_Vars equ   01h

Et enfin, le code du hook Token:
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
;#SECTION "MAIN", CODE

   org   userMem - 2
   db   0BBh, 6Dh
Start:
   ld   hl, TokenHook
   ld   de, 8000h
   ld   bc, FinHook - TokenHook + 1
   ldir
   ld   hl, 8000h
   ld   a, 1
   B_CALL   4F99h
   ret

TokenHook:
   db   83h
   push   af
   bit   0, (iy + 22h)
   ret   z
   pop   af
   push   hl
   ld   hl, 24h
   or   a
   sbc   hl, de
   pop   hl
   jr   z, TokRound
   push   hl
   ld   hl, 4Ah
   or   a
   sbc   hl, de
   pop   hl
   jr   z, TokDeriv
   push   hl
   ld   hl, 06h
   or   a
   sbc   hl, de
   pop   hl
   jr   z, TokFrac
   push   hl
   ld   hl, 04h
   or   a
   sbc   hl, de
   pop   hl
   jr   z, TokDec
   push   hl
   ld   hl, 48h
   or   a
   sbc   hl, de
   pop   hl
   jr   z, TokIntegral
   push   hl
   ld   hl, 03BAh
   or   a
   sbc   hl, de
   pop   hl
   jr   z, TokLcm
   push   hl
   ld   hl, 03BCh
   or   a
   sbc   hl, de
   pop   hl
   jr   z, TokGcd
   push   hl
   ld   hl, 0450h
   or   a
   sbc   hl, de
   pop   hl
   jr   z, TokGet
   push   hl
   ld   hl, 05FAh
   or   a
   sbc   hl, bc
   pop   hl
   ret   nz
   ld   hl, 8000h + (NameRemainToken - TokenHook - 1)
   ret

TokGet:
   ld   hl, 8000h + (NameGetToken - TokenHook - 1)
   ret

TokDec:
   ld   hl, 8000h + (NameDecToken - TokenHook - 1)
   ret

TokFrac:
   ld   hl, 8000h + (NameFracToken - TokenHook - 1)
   ret

TokGcd:
   ld   hl, 8000h + (NameGcdToken - TokenHook - 1)
   ret

TokIntegral:
   ld   hl, 8000h + (NameIntegrToken - TokenHook - 1)
   ret

TokLcm:
   ld   hl, 8000h + (NameLcmToken - TokenHook - 1)
   ret

TokDeriv:
   ld   hl, 8000h + (NameDerivToken - TokenHook - 1)
   ret

TokRound:
   ld   hl, 8000h + (NameRoundToken - TokenHook - 1)
   ret

NameGetToken:
   db   9
   db   "#include "
NameDerivToken:
   db   11
   db   "d\x96rivation("
NameRoundToken:
   db   7
   db   "arondi("
NameDecToken:
   db   6
   db   "\x05ToDec"
NameFracToken:
   db   7
   db   "\x05ToFrac"
NameGcdToken:
   db   5
   db   "pgcd("
NameIntegrToken:
   db   9
   db   "integral("
NameLcmToken:
   db   5
   db   "ppcm("
NameRemainToken:
   db   6
   db   "reste("
FinHook:
;#IMPORT "TOKENS"
;#IMPORT "HooksEqu"

Voilà, si quelqu'un pouvait m'aider à résoudre ce problème, ce ne serait pas de refus :D
Merci d'avance
Image
User avatar
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 32.5%
 
Posts: 3446
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
MyCalcs profile
Class: ENS Rennes
GitHub: Ti64CLi

Re: ASM Mimas

Unread postby Ti64CLi++ » 28 Jun 2016, 14:17

Voilà le nouveau code du MenuHook:
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
;#SECTION "MAIN", CODE

   org   userMem - 2
   db   0BBh, 6Dh
Start:
   ld   hl, PrgmEditHook
   ld   de, 8265h
   ld   bc, EndHook - PrgmEditHook + 1
   ldir
   ld   hl, 8265h
   ld   a, 1
   B_CALL   5083h
   ret

PrgmEditHook:
   db   83h
   cp   04h
   ret   nz
   set 0, (iy + 22h)
   ld   a, (MenuCurrent)
   cp   mProgramHome
   ret   nz
   ld   a, (MenuCurrent + 1)
   cp   mPrgm_Edit
   ret   nz
   ld   hl, -9
   add   hl, de
   B_CALL   _Mov9ToOP1
   ld   a, ProgObj
   ld   (OP1), a
   B_CALL   _ChkFindSym
   inc   de
   inc   de
   ld   hl, tFact
   or   a
   sbc   hl, de
   call nz,SetFlag0
   ret

SetFlag0:
   res 0, (iy + 22h)
EndHook:
;#IMPORT "TOKENS"
;#IMPORT "MENUCURR"
Image
User avatar
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 32.5%
 
Posts: 3446
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
MyCalcs profile
Class: ENS Rennes
GitHub: Ti64CLi

Re: ASM Mimas

Unread postby Ti64CLi++ » 28 Jun 2016, 14:44

Bon alors avec les modifs, cela refait exactement la même chose que avant:
Voilà le nouveau code:
MenuHook:
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
;#SECTION "MAIN", CODE

   org   userMem - 2
   db   0BBh, 6Dh
Start:
   ld   hl, PrgmEditHook
   ld   de, 8265h
   ld   bc, EndHook - PrgmEditHook + 1
   ldir
   ld   hl, 8265h
   ld   a, 1
   B_CALL   5083h
   ret

PrgmEditHook:
   db   83h
   cp   04h
   ret   nz
   ld   a, (MenuCurrent)
   cp   mProgramHome
   ret   nz
   ld   a, (MenuCurrent + 1)
   cp   mPrgm_Edit
   ret   nz
   ld   hl, -9
   add   hl, de
   B_CALL   _Mov9ToOP1
   ld   a, ProgObj
   ld   (OP1), a
   B_CALL   _ChkFindSym
   inc   de
   inc   de
   ld   hl, tFact
   or   a
   sbc   hl, de
   jr   nz, SetFlag0
   set   0, (iy + 21h)
   ret

SetFlag0:
   res   0, (iy + 21h)
   ret

EndHook:
;#IMPORT "TOKENS"
;#IMPORT "MENUCURR"

Le fichier TOKEN:
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
;#SECTION "MAIN", CODE

   org   userMem - 2
   db   0BBh, 6Dh
Start:
   ld   hl, TokenHook
   ld   de, 8000h
   ld   bc, FinHook - TokenHook + 1
   ldir
   ld   hl, 8000h
   ld   a, 1
   B_CALL   4F99h
   ret

TokenHook:
   db   83h
   push   af
   bit   0, (iy + 21h)
   ret   z
   pop   af
   push   hl
   ld   hl, 24h
   or   a
   sbc   hl, de
   pop   hl
   jr   z, TokRound
   push   hl
   ld   hl, 4Ah
   or   a
   sbc   hl, de
   pop   hl
   jr   z, TokDeriv
   push   hl
   ld   hl, 06h
   or   a
   sbc   hl, de
   pop   hl
   jr   z, TokFrac
   push   hl
   ld   hl, 04h
   or   a
   sbc   hl, de
   pop   hl
   jr   z, TokDec
   push   hl
   ld   hl, 48h
   or   a
   sbc   hl, de
   pop   hl
   jr   z, TokIntegral
   push   hl
   ld   hl, 03BAh
   or   a
   sbc   hl, de
   pop   hl
   jr   z, TokLcm
   push   hl
   ld   hl, 03BCh
   or   a
   sbc   hl, de
   pop   hl
   jr   z, TokGcd
   push   hl
   ld   hl, 0450h
   or   a
   sbc   hl, de
   pop   hl
   jr   z, TokGet
   push   hl
   ld   hl, 05FAh
   or   a
   sbc   hl, bc
   pop   hl
   ret   nz
   ld   hl, 8000h + (NameRemainToken - TokenHook - 1)
   ret

TokGet:
   ld   hl, 8000h + (NameGetToken - TokenHook - 1)
   ret

TokDec:
   ld   hl, 8000h + (NameDecToken - TokenHook - 1)
   ret

TokFrac:
   ld   hl, 8000h + (NameFracToken - TokenHook - 1)
   ret

TokGcd:
   ld   hl, 8000h + (NameGcdToken - TokenHook - 1)
   ret

TokIntegral:
   ld   hl, 8000h + (NameIntegrToken - TokenHook - 1)
   ret

TokLcm:
   ld   hl, 8000h + (NameLcmToken - TokenHook - 1)
   ret

TokDeriv:
   ld   hl, 8000h + (NameDerivToken - TokenHook - 1)
   ret

TokRound:
   ld   hl, 8000h + (NameRoundToken - TokenHook - 1)
   ret

NameGetToken:
   db   9
   db   "#include "
NameDerivToken:
   db   11
   db   "d\x96rivation("
NameRoundToken:
   db   7
   db   "arondi("
NameDecToken:
   db   6
   db   "\x05ToDec"
NameFracToken:
   db   7
   db   "\x05ToFrac"
NameGcdToken:
   db   5
   db   "pgcd("
NameIntegrToken:
   db   9
   db   "integral("
NameLcmToken:
   db   5
   db   "ppcm("
NameRemainToken:
   db   6
   db   "reste("
FinHook:
;#IMPORT "TOKENS"
;#IMPORT "HooksEqu"

Et le fichier MENUCURR est le même qu'avant
Image
User avatar
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 32.5%
 
Posts: 3446
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
MyCalcs profile
Class: ENS Rennes
GitHub: Ti64CLi

Re: ASM Mimas

Unread postby Epharius » 28 Jun 2016, 20:15

Encore une fois, mon grand conseil sera de débugger à grands coups de dispHL et de désactiver des trucs au hasard pour voir d'où ça vient. Par exemple, désactive un hook, puis l'autre, puis active l'un mais en enlevant tout son contenu etc.
Le projet Geometry Dash est terminé ! N'hésitez pas à aller jeter un coup d’œil au topic du projet ! Vous pouvez le télécharger ici.

Unis par la flèche sacrée de cupidon :favorite:
Image
User avatar
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 8.7%
 
Posts: 1172
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ensimag
GitHub: MathisLav

PreviousNext

Return to Langages alternatifs

Who is online

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

-
Search
-
Social TI-Planet
-
Featured topics
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 !
1234
-
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.
1005 utilisateurs:
>976 invités
>23 membres
>6 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
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)