π
<-

[83PCE] PHASM

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

Re: [83PCE] PHASM

Unread postby Lionel Debroux » 18 Oct 2015, 11:49

Je ne suis pas convaincu que l'anglais impeccable soit obligatoire, un certain nombre de contributeurs n'étant pas de langue maternelle anglaise.

Pour les relatifs nouveaux venus, je pense que la liste des réalisations dans la communauté est plus utile à ceux qui valident les comptes, à commencer par Brandon Wilson, à supposer qu'il ne vous connaisse pas encore. Typiquement, PHASM, il devrait déjà connaître :)
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
User avatar
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 11.3%
 
Posts: 6869
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Class: -
GitHub: debrouxl

Re: [83PCE] PHASM

Unread postby Epharius » 18 Oct 2015, 12:33

Ah bon ? Ça me parait bizarre qu'il n'y ait pas besoin d'avoir un anglais plutôt soutenu pour pouvoir écrire des articles anglais que tout le monde pourra voir... C'est justement pour ça que je ne me suis pas encore inscrit, mon anglais n'est pas top top, après à vous de me le dire, je ne me rend pas toujours compte des fautes que je fais x)
Sinon, B.W. passe souvent sur cemetech ? Je croyais qu'il était moins actif qu'il y a quelques années dans la communauté.
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: 1174
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ensimag
GitHub: MathisLav

Re: [83PCE] PHASM

Unread postby Lionel Debroux » 18 Oct 2015, 13:19

J'ai vu assez nettement pire que ton anglais ;)

Brandon Wilson est en effet plus occupé ces temps-ci, mais il est toujours assez facilement joignable sur #ti, par exemple, pour autant que je puisse voir.
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
User avatar
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 11.3%
 
Posts: 6869
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Class: -
GitHub: debrouxl

Re: [83PCE] PHASM

Unread postby Epharius » 22 Oct 2015, 23:02

Bonjour tout le monde ;)

Je vous poste ici juste mon avancement et là où j'en suis :
J'ai terminé l'exécuteur universel, et le instant GoTo. Le Instant GoTo fait en sorte que quand vous appuyez sur [Alpha][Enter] consécutivement, vous alliez à la fin du programme instantanément sans scroll.
Mais que fais-je maintenant ? Suite à des gros problèmes d'incompréhension de "mais heu, pourquoi ça marche pas"et de plusieurs tests, j'en suis venu à la conclusion que l'OS utilisait une partie de pixelshadow2. J'ai la place mais que pour un seul hook. J'ai donc décidé de faire en vitesse la compatibilité avec Cesium, qui résout aussi ce problème et bien d'autres. Pour cela je dois mettre PHASM dans un group car, apparemment, même si cela m'étonne, ils ne sont pas affectés par le GarbageCollect.

Mon travail, c'est de :
1 - Mettre le plus d'adresses en relatif (donc JR ou lieu de JP), car je ne saurais pas à la compilation où sera le Group. Mettre tout en relatif étant impossible (par exemple pour mettre un nom de variable dans OP1, j'ai besoin d'utiliser LDIR et donc les adresses absolues), PHASM calculera quelques adresses à l'installation du hook.
2 - Faire le programme qui justement, calculera les adresses absolues.
3 - Apprendre comment créer les variables Groups et surtout, comment mettre des programmes à l'interieur. Mais ça au pire, l'user pourra transferer le Group avec les hooks tous prêts dedans.
4 - ça je viens de terminer, bien comprendre comment sont organisés les Group, pour les manipuler afin de changer les adresses absolues (CF avant).

Et comme je n'aime pas ne pas partager ce que j'ai mis tant de temps à découvrir, voici comment sont organisées les variables Groups (désolé, j'ai pas photoshop sous la main, ce sera plus traditionnel :p) :

On prend l'exemple d'un Group qui s'appelle "MACHIN" avec le programme "TRUC" dedans :
1-1XXXXXX2MACHINXX3XXXXX4TRUC5-5***********[...]2XXX etc...

LEGENDE :
X : je ne sais pas à quoi ça sert, la plupart doivent être des adresses ou des trucs du genre.
1-1 : Les deux octets qui sont la taille de la variable Group
2 : l'octet qui définit la taille du nom du Group
3 : type de la prochaine variable (05 si programme, 06 si programme protégé etc...)
4 : l'octet qui nous informe de la taille du nom de la prochaine variable
5 : les deux octets qui nous disent la taille du CONTENU de la prochaine variable. C'est-à-dire que contrairement au nombre qu'il y a affiché normalement dans le gestionnaire de mémoire, celui-ci ne compte pas le nom toussa dans la taille. Juste le contenu.
***** : contenu du programme

Bon, ça a surement du être documenté autre part, mais tant pis, je me suis amusé à faire un programme qui m'a permit de me balader dans l'OS, c'était cool :p
Pour ceux qui seraient intéressés par ce programme (au moins juste pour que vous puissiez visualiser comment j'ai fait) :
Code: Select all
.nolist
   #include "ti83pce.inc"
   #macro bcall(x)
      call x
   #endmacro
.list
   .org userMem-2
   .db tExtTok,tAsm84CeCmp

start:
   ld hl,test2
   call _mov9ToOp1
   call _clrlcdfull
   call _chkFindSym
   ret c
   ex de,hl
   push hl
   call _zeroop1
   pop hl
   inc hl
   inc hl
   call disp
loop:
   push hl
   call _getkey
   pop hl
   push af
   cp kLeft
   jr nz,notLeft
   dec hl
   call disp
notLeft:
   cp kRight
   jr nz,notRight
   inc hl
   call disp
notRight:
   cp kAdd
   jr nz,notAdd
   inc hl
   inc hl
   inc hl
   inc hl
   inc hl
   call disp
notAdd:
   cp kSub
   jr nz,notSub
   dec hl
   dec hl
   dec hl
   dec hl
   dec hl
   call disp
notSub:
   pop af
   cp kEnter
   jr nz,loop
   ret

disp:
   ld a,0
   ld (curcol),a
   ld (currow),a
   ld de,buffer
   ld bc,13
   ldir
   ld de,13
   sbc hl,de
   push hl
   call _clrlcdfull
   ld de,buffer
   ld b,13
dispChars:
   push bc
   ld a,(de)
   call _putC
   ld a,' '
   call _putC
   inc de
   pop bc
   djnz dispChars

   ld a,1
   ld (currow),a
   ld a,7
   ld (curcol),a
   pop hl
   push hl
   ld de,7
   add hl,de
   push hl
   ld a,(hl)
   ld hl,0
   ld l,a
   call _disphl
   pop hl
   ld a,2
   ld (currow),a
   ld a,14
   ld (curcol),a
   ld a,(hl)
   ld de,0
   ld e,a
   call _putTokString
   pop hl
   ret

test2:
   .db GroupObj,"COUCOU",0
buffer:
   .db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.end



Voilà, maintenant je passe à la transcription des adresses absolues !
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: 1174
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ensimag
GitHub: MathisLav

Re: [83PCE] PHASM

Unread postby Adriweb » 23 Oct 2015, 02:36

Bien joué pour le instant goto :)

Et. hmm, oui, les formats sont connus et documentés...
Les groupes sont entre autre fait de varEntry, AFAIK, et chaque varEntry est faite comme ça:
Image
Cf. le Link Guide (hosté à plusieurs endroits, ce lien est un parmi d'autres).

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: 79.7%
 
Posts: 14820
Images: 1131
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: [83PCE] PHASM

Unread postby Lionel Debroux » 23 Oct 2015, 07:22

Question idiote: pourquoi pas un seul "shell" PHASM + Cesium ?
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
User avatar
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 11.3%
 
Posts: 6869
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Class: -
GitHub: debrouxl

Re: [83PCE] PHASM

Unread postby Adriweb » 23 Oct 2015, 08:28

Cesium pourrait intégrer les features de PHASM (à vrai dire, Mateo ne l'avait pas originellement pas fait pour non seulement laisser la place à des programmes plus légers et spécifiques comme celui-ci, mais aussi pour voir ce que feraient les autres) - puisque Mateo n'est plus vraiment actif/disponible et que le source est dispo sur GitHub et potentiellement prêt à recevoir des PRs... il serait donc possible d'intégrer ce genre de fonctionnalités à Cesium, et donc de faire un tout-en-un (ce que DCS9 veut/va être, si je ne me trompe pas).
Côté "lourdeur", il y aurait donc PHASM < Cesium < DCS9. Chacun a son public...

Donc je ne suis pas contre l'intégration de nouvelles features à Cesium (à Epharius de proposer une PR avec ces changements), mais il faudrait aussi que PHASM en tant que tel (programme léger, juste présentant des features utiles sous forme de hook) continue à exister pour ceux qui ne souhaitent pas forcément avoir un lanceur de programmes distinct qu'ils n'utiliseraient pas forcément.

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: 79.7%
 
Posts: 14820
Images: 1131
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: [83PCE] PHASM

Unread postby Hayleia » 23 Oct 2015, 11:49

C'est aussi ce que j'avais proposé plusieurs fois sur le chat, et honnêtement je ne vois pas pourquoi ça ne se ferait pas. Même pour ceux qui n'utilisent soit que PHASM soit que Cesium, qu'est-ce que ça dérange ? On est sur une 83PCE avec 3Mo de libre, pas sur une 83+ avec 160Ko (sur laquelle quoi qu'on puisse dire, 49152 octets ça fait mal quand on ne se sert justement que du hook...).

Ou alors, juste rajouter un petit bout à Cesium qui, lorsqu'on le quitte, vérifie si PHASM est présent sur la calculatrice et exécute son code d'installation.

Mais bon, s'il y a d'autres moyens de les faire cohabiter, je ne dis pas non non plus ^^

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: [83PCE] PHASM

Unread postby Epharius » 23 Oct 2015, 12:04

Au moins, j'ai pu constater ça par moi-même :p
Merci pour le lien, ça va m'être utile !

Hayleia : Oui mais ça fait un peu perso, non ? Et puis de toute façon je doit le mettre autre part que dans la RAM, donc ce n'est pas nécessaire.

Sinon, Adriweb, tu voulais que je te passe le code source du Instant GoTo (tout bien commenté etc :p) :
Code: Select all
; ***************************** Instant GoTo ***************************** ;
; It jumps to the end of the program editor, when the user presses [Alpha]+[Enter]
; It does not jump whether the program is less than 9 lines


beginGetkeyHook:
   .db 83h            ; All hooks begin with .db 83h
   cp 1Bh            ; we check if the OS called the hook because a key has been pressed
   ret nz
   ld a,b            ; A = key
   cp skEnter         ; if [Enter] has been pressed
   ret nz
   bit shiftAlpha, (iy+shiftFlags) ; ...with Alpha
   jr z,AlphaIsNotPressed

   call _cursorOff      ; To delete the print under the cursor
   ld de,(editBtm)      ; DE = End of the edit buffer
   ld hl,(editTail)   ; HL = current location of the cursor
   ld b,9
checkNbrOfLines:      ; checking if there are more than 9 lines (need to scroll to go at the end of the edit buffer)
   push hl            ; If HL=DE (if the cursor is at the end of the buffer)
   or a
   sbc hl,de
   pop hl
   jr z,NoEnoughLines

   inc hl
   ld a,(hl)
   cp tEnter         ; If there is a "Enter" token
   jr nz,checkNbrOfLines
   djnz checkNbrOfLines

   call _bufToBtm          ; We jump at the End of the Edit buffer
   ld b,9
updateScreen:         ; we need to move back to update the screen (9 lines)
   call _BufLeft
   ld a,e
   cp tEnter
   jr nz,updateScreen
   djnz updateScreen

   call _dispTail      ; end of the edit buffer
   res shiftAlpha, (iy+shiftFlags)
   ld a,1
   and a            ; we say to the calculator that he must do nothing
   ret

NoEnoughLines:
   res shiftAlpha, (iy+shiftFlags)
   ld a,skEnter
   and a
   ret

AlphaIsNotPressed:
   and a
   ret
endGetkeyHook:

.echo "Getkey Hook : ", endGetkeyHook - beginGetkeyHook, " bytes"

#désoléPourLesFautesDanglais
À noter que la plupart des choses que je fais, sont faites grâce aux RomCalls, rien d'extraordinaire, fallait juste avoir une doc bien fournie.

D'ailleurs quand vous dites, intégrer des fonctionnalités dans Cesium, comme le dit Hayleia, la place n'est plus considéré comme si précieux. Je pense que PHASM perdrait de son utilité (au profit des anglais *touss* touss*)
Last edited by Epharius on 23 Oct 2015, 13:45, edited 1 time in total.
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: 1174
Images: 4
Joined: 08 Dec 2014, 17:38
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: Ensimag
GitHub: MathisLav

Re: [83PCE] PHASM

Unread postby Hayleia » 23 Oct 2015, 13:39

Par "ça fait un perso", tu veux dire, "un personnel" ? Parce que si c'est ça, j'aurais soit rajouté un "en" dans la phrase soit pas raccourci "personnel" mais là je comprends pas la phrase :P
Si c'est ça, alors oui, c'est vrai que ça en fait un perso. C'est pas mal non plus tant qu'on peut les utiliser conjointement.

Sinon, si tu as la flemme de résoudre ton problème d'adresses, tu pourrais faire quelque chose d'un peu plus compliqué.
En gros, ton groupe contiendrait deux choses :
1) le code exécuté par le hook
2) le code que tu veux vraiment voir exécuté par le hook

Le code 2 serait codé en adresses absolues genre pixelshadow, et le code 1 copierait ce code 2 dans pixelshadow avant de l'exécuter.

Bon, après le code risque d'être assez bordélique si l'installateur du hook contient des codes (1) qui copient des codes (2) qui copient des codes qui installent des hooks (celui qui se lance après le programme exécuté) :P

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

PreviousNext

Return to Langages alternatifs

Who is online

Users browsing this forum: ClaudeBot [spider] and 4 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.
1502 utilisateurs:
>1486 invités
>8 membres
>8 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)