π
<-

[ASM] Rafraichissement de l'edit Buffer

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

[ASM] Rafraichissement de l'edit Buffer

Postby Epharius » 18 Oct 2015, 21:43

Bonjour tout le monde !

Je m'adresse à Matref, TheMachine42 et tous ceux qui seront en mesure de répondre à ma question, question qui demande pas mal de connaissances en programmation assembleur. Je compte sur vous, ce sera probablement une fonctionnalité de PHASM si j'arrive à débugger ça.
Commençons....

Le fait que ce soit pour Ti-83 Premium CE ne change absolument rien ! Le code est TOTALEMENT compatible avec n'importe quelle Ti z80 puisqu'elle n'utilise pas l'écran graphique, en supposant bien sûr d'avoir recompilé le code.


Vocabulaire : L'edit Buffer est un endroit de RAM ou la variable actuellement éditée est stockée. L'exemple le plus courant d'edit buffer est l'édition de programme basic, dans :f43: :f26:

Je suis sur PHASM, le shell pour ti-83 premium CE, depuis pas mal de temps et j'ai terminé les fonctionnalités de base.
Maintenant je veux m'attaquer à la suppression du never-ending scroll, qu'on a lorsqu'on choisit "goTo" lors d'une erreur dans un programma basic. Attention à faire la différence avec ce qu'avait matref ici. Je veux vraiment faire un instant goTo, pas voir le code défiler pendant 10 minutes.
Tout content de mon idée je me suis documenté pendant quelques heures, et j'ai trouvé ce que je cherchais : editCursor. Cet emplacement de RAM contient en fait l'adresse du token sous le curseur dans l'édition de variable ou pour être plus précis : Stores the address of where editing is taking place. As opposed to the visible cursor displayed on screen, this location stores the address of the token under the cursor.

C'est donc avec le fonctionnement des romCalls du buffer d'édition en tête que je me met à l'écriture de mon code. Je fais bien sûr quelques tests pour voir si tout marche et je me rend compte que changer editCursor c'est bien beau, mais ça ne change QUE le token (enfin, abus de langage, ce n'est pas un token mais passons) en dessous du curseur, ce qui nécessite de scroller un peu pour remettre les tokens à leur place. En gros faudrait rafraichir le contenu de l'edit buffer. Bon bien entendu, pas la peine de penser à grBufCpy, l'écran n'est pas contenu dedans. Je vous met mon code :

Code: Select all
ld hl,RawKeyHook
   ld de,$D052C6                 ; Adresse saferam
   ld bc,stop-begin+1
   ldir
   ld hl,$D052C6
   ld (RawKeyHookPtr),hl      ; Activation du Raw Key Hook
   set rawKeyHookActive, (iy+hookFlags2)
   ret


RawKeyHook:
   .org $D052C6
begin:
   .db 83h
   cp 250            ; if [<>] has been pressed
   ret nz
   bit editOpen, (iy+editFlags)
   ret z
   ld hl,editCursor
   inc (hl)
   inc (hl)
   inc (hl)
   inc (hl)
   inc (hl)
   ld a,0
   ret
stop:


Concrètement que fait ce code ? Déjà le début jusqu'à begin c'est juste pour activer le hook. J'utilise le rawKeyHook, le hook qui s'exécute à chaque fois qu'une touche a été pressée, en gros.
Le hook vérifie d'abord que c'est bien la touche <> qui a été pressée, ensuite il vérifie qu'on est bien dans l'edit buffer. Enfin, il incrémente 5 fois l'adresse du curseur, pour ensuite retourner à l'OS. Logiciellement ce hook marche, le curseur est bien 5 tokens après. Graphiquement c'est la guerre du Vietnam : on a des tokens qui se baladent à l'écran quand on re-bouge le curseur.

Bref, ma question est : comment fait-on pour rafraichir l'edit buffer ? la romCall _DispTail le fait bien elle, il doit y avoir un moyen...
Merci de m'avoir lu, si c'est le cas, jusqu'ici ! J'espère que vous pourrez m'aider ;)
N'hésitez pas à me demander plus d'infos si vous n'avez pas compris quelque chose, je vous répondrai le plus vite possible !
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.9%
 
Posts: 1182
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ensimag
GitHub: MathisLav

Re: [ASM] Rafraichissement de l'edit Buffer

Postby Adriweb » 18 Oct 2015, 21:53

Quel est le problème à utiliser _DispTail ?

(Edit: au passage, il y a ce PDF via TI, même s'il n'apportera probablement pas grand chose: https://web.archive.org/web/20040228033 ... ditbuf.pdf )

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 82.1%
 
Posts: 14880
Images: 1211
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: [ASM] Rafraichissement de l'edit Buffer

Postby Epharius » 18 Oct 2015, 21:56

Très bonne question : _DispTail scroll jusqu'à la fin du programme, moi je veux aller instantanément à la fin, sans scroll. Sinon, le hook n'a plus d'intérêt, c'est comme ce que fait actuellement le GoTo dans les erreurs.
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.9%
 
Posts: 1182
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ensimag
GitHub: MathisLav

Re: [ASM] Rafraichissement de l'edit Buffer

Postby Hayleia » 18 Oct 2015, 22:01

Sinon, il n'y aurait pas moyen de déplacer ton curseur de manière progressive (sans le faire sauter) mais sans que le scroll ne soit visible à l'écran ? Je veux dire, quand tu le bouges ton curseur, ça prend effet à l'écran tout de suite ? Tu peux pas genre le faire scroller 1 "token" par 1 "token" jusqu'à la position voulue sans causer de scroll visible ?

Image
ImageImageImage
Pokemon Topaze (Axe) discussion and download links here
(19:29:36) noelnadal: plus sérieusemen​t, j'ai très peu de problèmes
(22:45:44) Clifward: J'aime rire du malheur des autres :troll:

(2017.11.18 - 17:07:12) Fireworks: Hayleia !!!!!
(2017.11.18 - 17:07:19) TI-Bot: Fireworks has been logged out (Kicked).
(2017.11.18 - 17:07:22) TI-Bot: Ban of user Fireworks revoked.
(2017.11.18 - 17:07:25) TI-Bot: Fireworks logs into the Chat.
(2017.11.18 - 17:07:28) Fireworks: <3
(2017.11.18 - 17:07:31) Fireworks: 208
User avatar
HayleiaGénéreux
Niveau 17: GM (Grand Maître des calculatrices)
Niveau 17: GM (Grand Maître des calculatrices)
Level up: 43.8%
 
Posts: 2509
Images: 2
Joined: 30 Aug 2011, 08:22
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Templar

Re: [ASM] Rafraichissement de l'edit Buffer

Postby Adriweb » 18 Oct 2015, 22:05

Il me semble que Doors CS fait ce genre de choses, mais évidemment KermM est contre le fait de le mettre open-source...

Bref, sinon, tu peux toujours regarder comment fonctionne le DispTail.

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 82.1%
 
Posts: 14880
Images: 1211
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: [ASM] Rafraichissement de l'edit Buffer

Postby Epharius » 18 Oct 2015, 22:08

En fait ce que ça fait, c'est que le curseur, graphiquement, ne bouge pas. C'est juste le token en dessous du curseur qui change. Et encore, ce n'est pas le token mais le caractère qui change, puisqu'il est en dessous du curseur qui clignote et qui rafraichit l'emplacement.

Adriweb : oui j'y ait pensé mais je n'ai même pas pris la peine de lui demander :p
Sinon, je n'ai jamais fait de reverse engineering, je ne sais pas du tout comment faire... Le code de la romCall, on peut le trouver quelque part ?
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.9%
 
Posts: 1182
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ensimag
GitHub: MathisLav

Re: [ASM] Rafraichissement de l'edit Buffer

Postby Adriweb » 18 Oct 2015, 22:20

Tu peux toujours utiliser le désassembleur de DrDnar ou le module IDA ez80 de Brandon Wilson, les deux conviennent.
Ensuite faire du search/replace des addresses par leurs equates à partir du fichier d'include communautaire.

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 82.1%
 
Posts: 14880
Images: 1211
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: [ASM] Rafraichissement de l'edit Buffer

Postby Epharius » 18 Oct 2015, 22:23

ok merci, ça me sera utile ;)

J'ai eu une idée entre temps... je vais essayer de mettre editBtm (adresse maximum du curseur) dans editCursor pour voir ce que ça fait. Je sais que ça ne marchera pas mais ça va me permettre de mieux comprendre le fonctionnement. D'ailleurs si quelqu'un sait la différence entre editTail et editBtm... x)
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.9%
 
Posts: 1182
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ensimag
GitHub: MathisLav

Re: [ASM] Rafraichissement de l'edit Buffer

Postby Hayleia » 18 Oct 2015, 22:25

Je ne sais pas la différence, je ne fais que des suppositions.
Peut être que tail, c'est la fin fin du programme alors que btm c'est le premier "token" de la dernière ligne ?

Image
ImageImageImage
Pokemon Topaze (Axe) discussion and download links here
(19:29:36) noelnadal: plus sérieusemen​t, j'ai très peu de problèmes
(22:45:44) Clifward: J'aime rire du malheur des autres :troll:

(2017.11.18 - 17:07:12) Fireworks: Hayleia !!!!!
(2017.11.18 - 17:07:19) TI-Bot: Fireworks has been logged out (Kicked).
(2017.11.18 - 17:07:22) TI-Bot: Ban of user Fireworks revoked.
(2017.11.18 - 17:07:25) TI-Bot: Fireworks logs into the Chat.
(2017.11.18 - 17:07:28) Fireworks: <3
(2017.11.18 - 17:07:31) Fireworks: 208
User avatar
HayleiaGénéreux
Niveau 17: GM (Grand Maître des calculatrices)
Niveau 17: GM (Grand Maître des calculatrices)
Level up: 43.8%
 
Posts: 2509
Images: 2
Joined: 30 Aug 2011, 08:22
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Templar

Re: [ASM] Rafraichissement de l'edit Buffer

Postby Adriweb » 18 Oct 2015, 22:33

Les pointeurs editTop/Cursor/Tail/Btm sont relatifs à l'edit buffer, pas au contenu (si c'était ton idée).

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 82.1%
 
Posts: 14880
Images: 1211
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb


Return to Langages alternatifs

Who is online

Users browsing this forum: ClaudeBot [spider] and 4 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.
7109 utilisateurs:
>7069 invités
>31 membres
>9 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)