π
<-
Chat plein-écran
[^]

[Ti 83 premium CE] Lire une OS_variables

Assembleur, Axe, ICE, BBC Basic...

[Ti 83 premium CE] Lire une OS_variables

Message non lude axel stefanini » 08 Oct 2018, 21:20

Bonjour;
J'aimerais pouvoir accéder depuis mon programme en C, à une variable très spécifique ; en effet lorsqu'on définit une équation, on peut faire une manipulation très simple par la suite, on peut changer la valeur de X en Ti basique, puis taper Y1 en entrée, et on obtient le résultat de la fonction avec la valeur de X demandé.
Lorsque l'équation Y1 équivaut à X², on peut obtenir le résultat de la fonction... J'aimerais en C pouvoir y accéder cependant, je n'y arrive pas,

screenshot_CPRGMCE.png
screenshot_CPRGMCE.png (3.45 Kio) Vu 292 fois


Je vous donne le lien de mon projet builder ; https://tiplanet.org/pb/?id=108416_1538 ... 8b7cf60fa6
J'ai déjà jeter un coup d'oeil au toolchaine sans succès ; https://ce-programming.github.io/toolch ... 27c94b6892

En utilisant le logiciel CEme la variable est "ans" ;

cemu Emulator.PNG


Merci beaucoup!!
Avatar de l’utilisateur
axel stefanini
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Prochain niv.: 50.4%
 
Messages: 18
Inscription: 19 Sep 2016, 17:48
Genre: Non spécifié

Re: [Ti 83 premium CE] Lire une OS_variables

Message non lude Adriweb » 09 Oct 2018, 06:13

Mateo m'a contacté pour en savoir plus (il n'etait pas sur de ta demande), mais il a pu finir par repondre entre temps si j'ai bien suivi :)

Bref, en effet ca se fait avec les fonctions de la lib fileioc, il y a des exemples sur https://github.com/CE-Programming/toolc ... src/main.c
En prenant ca en consideration, vu qu'on peut lire et ecrire des variables TI-Basic, quel serait le probleme desormais ?
Avatar de l’utilisateur
AdriwebAdmin.
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 41.9%
 
Messages: 12002
Images: 846
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
Classe: (ingénieur)
Twitter: adriweb
GitHub: adriweb

Re: [Ti 83 premium CE] Lire une OS_variables

Message non lude axel stefanini » 09 Oct 2018, 18:01

Bonsoir!

Alors oui il m'a répondu, et cela m'a beaucoup aidé à comprendre certaine chose autour des variables dans la calculatrice.
Cependant, j'ai malheureusement compris que l'histoire de la variables "Ans" au final ne m'étais pas utile...

Je cherche à faire calculé l'OS à ma place, j'aimerais non pas récuper la variable "Ans" qui est juste la dernière variable calculé, mais j'aimerais obtenir la valeur de la donnée Y1 que calcul l'OS et stock ensuite dans la var Ans.
Et j'ai déjà regardé plusieurs fois les nombreux exemples proposé, et la variables Y1 existe en equation et non pas en résultat, cependant en Ti basic on peut obtenir le résultat juste en tapant Y1 dans les entrées...

Voila mon le problème qui persiste ^^
Merci!
Avatar de l’utilisateur
axel stefanini
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Prochain niv.: 50.4%
 
Messages: 18
Inscription: 19 Sep 2016, 17:48
Genre: Non spécifié

Re: [Ti 83 premium CE] Lire une OS_variables

Message non lude Hamza.S » 09 Oct 2018, 18:15

inspire toi de ça : https://github.com/nathanfarlow/Symboli ... tor/main.c

Code: Tout sélectionner
ti_var_t y1, y2;
...
y1 = ti_OpenVar(ti_Y1, "r", TI_EQU_TYPE);

après je ne sais pas s'il y a autre chose à faire pour en arriver là
Image
Avatar de l’utilisateur
Hamza.SAdmin.
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 95.7%
 
Messages: 2971
Images: 17
Inscription: 07 Nov 2014, 00:43
Genre: Homme
Calculatrice(s):

Re: [Ti 83 premium CE] Lire une OS_variables

Message non lude axel stefanini » 09 Oct 2018, 18:29

Hamza.S a écrit:inspire toi de ça : https://github.com/nathanfarlow/Symboli ... tor/main.c

Code: Tout sélectionner
ti_var_t y1, y2;
...
y1 = ti_OpenVar(ti_Y1, "r", TI_EQU_TYPE);

après je ne sais pas s'il y a autre chose à faire pour en arriver là


J'ai déjà regardé plusieurs fois ce code en effet, il est très instructif, cependant il traite non pas un résultat mais une sorte de tableau dans lequel est stocké la l'équation purement en écriture formel.
Et je pense que créer un systeme capable de calculer un résultat à partir de cela est assez compliqué. En effet il faudrait créer tout un système capable de calculer la fonction en respesctant les règles de calcul formel. Ce qui reviendrait alors, à surchargé la calculatrice...

J'ai également déjà essayé de stocker la variables Y1 dans un real_t après l'avoir récupéré via la commande que tu as cité ici en esperant que l'OS allait me la calculer toute seule, mais sans résultat...
Avatar de l’utilisateur
axel stefanini
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Prochain niv.: 50.4%
 
Messages: 18
Inscription: 19 Sep 2016, 17:48
Genre: Non spécifié

Re: [Ti 83 premium CE] Lire une OS_variables

Message non lude Hamza.S » 09 Oct 2018, 18:49

Ça a recopié Y1 tel qu'elle est écrite. C'est comme la fonction équ>string( donc essaie de comprendre comment ça fonctionne. Possible qu'il fait aussi ce qui tu veux
Image
Avatar de l’utilisateur
Hamza.SAdmin.
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 95.7%
 
Messages: 2971
Images: 17
Inscription: 07 Nov 2014, 00:43
Genre: Homme
Calculatrice(s):

Re: [Ti 83 premium CE] Lire une OS_variables

Message non lude axel stefanini » 09 Oct 2018, 19:53

Alors actuellement j'arrive à ouvrir la virable y1 mais pas à recupéré ce qu'il y a dedans ;

Code: Tout sélectionner

ti_var_t y1;
equ_t    *my_equ;

y1 = ti_OpenVar(ti_Y1, "r", TI_EQU_TYPE);


Ainsi il est impossible de cast une ti_var_t en une equ_t voilà quelques trucs que j'ai déjà essayé ;
Code: Tout sélectionner
my_real = (real_t)y1; //erreur
my_real = os_FloatToReal((float)ti_GetDataPtr(y1)); //erreur
   
result = (int)y1; //Donne 0 pour n'importe quelle fonction Y1 et valeur de X.
result = (int)ti_GetDataPtr(y1); //Donne 211 pour n'importe quelle[..]

    txt[0] = (char)y1; //Vide completement

etc...



Je rappel que l'equation en tant que tel ne m'interesse pas, car elle ne me servirait à rien, il me faudrait le résultat que la calculatrice calcul.

En faite, ce que j'ai besoin de faire en C, cela ce fait super facilement en Ti-Basic ;
Code: Tout sélectionner
­2→X
1→I
While I<10
Y₁→L₁(I)
I+1→I
X+0.5→X
End


Merci!
Avatar de l’utilisateur
axel stefanini
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Prochain niv.: 50.4%
 
Messages: 18
Inscription: 19 Sep 2016, 17:48
Genre: Non spécifié

Re: [Ti 83 premium CE] Lire une OS_variables

Message non lude Adriweb » 10 Oct 2018, 02:36

En fait, Y1 est une equation/"expression", donc tu n'auras pas de resultat de call en la demandant - mieux vaut stocker au prealable Y1(2) (par exemple, X=2 dans ce cas) dans une variable, puis la recuperer cote C. Il y a possblement mieux a faire...
Avatar de l’utilisateur
AdriwebAdmin.
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 41.9%
 
Messages: 12002
Images: 846
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
Classe: (ingénieur)
Twitter: adriweb
GitHub: adriweb

Re: [Ti 83 premium CE] Lire une OS_variables

Message non lude axel stefanini » 10 Oct 2018, 19:47

Le problème c'est que mélanger des programmes en Ti basic et C va être vite problématique...
En soit j'aimerais calculé un grand nombre d'image de la fonction Y1 pour des valeurs de X et Y donnée.

J'ai beaucoup réflechi, et je me suis demandé,
Lorsque on entre Y1 et qu'on obtient le résultat, l'OS réalise le calcul à notre place et le stock dans la variables "Ans", grâce au désassemblage de l'émulateur CEmu, serait-il possible de récupérer en Assembleur la fonction qui se charge de faire le boulot ?
En effet, dans la documentation du fichier "fileioc.h File Reference" nous pouvons voir que ;
Code: Tout sélectionner
/* Some more definitions using Ans */
#define TI_ANS_TYPE (0x00)
#define ti_Ans      ("\x72\0")


Grâce à ces informations, serait-il possible de retrouver quelle(s) fonction(s) stock(ent) le résultat de Y1 dans la cellule de mémoire correspondant à la variables "Ans" ?
Ainsi il """suffirait""" de rappelle cette/ces même(s) fonction(s) via ;
Code: Tout sélectionner
_OS()
void _OS   (   void(*)(void)    function   )   
Use this function to call assembly functions in the OS and Bootcode i.e. _OS( asm_ArcChk );


Voici ce que j'ai sur CEmu après quelques recherche ;
Ans.PNG
Ans.PNG (7.11 Kio) Vu 146 fois

Ans2.PNG



Merci!
Avatar de l’utilisateur
axel stefanini
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Prochain niv.: 50.4%
 
Messages: 18
Inscription: 19 Sep 2016, 17:48
Genre: Non spécifié

Re: [Ti 83 premium CE] Lire une OS_variables

Message non lude axel stefanini » 10 Oct 2018, 20:36

Après avoir passé beaucoup de temps dans la documentation j'ai trouvé une commande très intéréssante ;

En effet il existe une fonction appellé ;

Code: Tout sélectionner
os_StrToReal()
real_t os_StrToReal   (   const char *    string,
char **    end
)   
This converts a ti-ascii string to a ti-float.


J'ai donc combiné cette fonction avec un Os_input.

Voici mon code ;

Code: Tout sélectionner
#define INPUT_SIZE  10
#define RESP_SIZE   20

/* Main Function */
void main(void) {

    /* Declare some variables */
    real_t    real_value;
    char inputBuffer[INPUT_SIZE];
    char *str = malloc(10*sizeof(char));
    char** pointer = NULL;

    /* Clear the homescreen */
    os_ClrHome();

    /* Ask the user to type a string, which gets stored in `inputBuf` */
    os_GetStringInput("What is f? ", inputBuffer, INPUT_SIZE);



    strcpy(str, inputBuffer); // copy the contents of inputBuffer to str

    pointer = &str;

    real_value = os_StrToReal(str,&str+8);

    ti_SetVar(TI_REAL_TYPE, ti_A, &real_value);

    while( !os_GetCSC() );

}


Comment puis-je faire pour que dans la partie os_StrToReal(char *,char**); Je puisse avoir une commande parfaitement fonctionnel ? Car avec mon code elle ne copie que le premier caractère intégré.

Merci!
Avatar de l’utilisateur
axel stefanini
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Prochain niv.: 50.4%
 
Messages: 18
Inscription: 19 Sep 2016, 17:48
Genre: Non spécifié


Retourner vers Langages alternatifs

Qui est en ligne

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

-
Rechercher
-
Sujets à la une
Triconcours universel de la rentrée - 2000 euro de prix !
"NumWorks++": Challenge de modification matérielle pour rajouter une puce de mémoire Flash !
Offre TI-Planet/Jarrety pour avoir la TI-83 Premium CE avec son chargeur pour 79,79€ port inclus !
Offre TI-Planet/Jarrety pour avoir la TI-Nspire CX CAS à seulement 130€ TTC port inclus!
Jailbreake ta TI-Nspire avec Ndless et profite des meilleurs jeux et applications !
Transforme ta TI-Nspire CX en console Game Boy Advance!
123456
-
Donations/Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
PayPal : paiement en ligne sécurisé - secure online payments
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 
-
Stats.
433 utilisateurs:
>382 invités
>46 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
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)