Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » KhiCAS, add-in calcul formel pour Graph 90+e
ParisseHors ligneMembrePoints: 185 Défis: 0 Message

KhiCAS, add-in calcul formel pour Graph 90+e

Posté le 15/07/2018 12:09

KhiCAS est le portage de Xcas pour Casio Graph 90+e. En résumé, il transforme la Graph 90+e en calculatrice CAS (ce qui en fait la calculatrice CAS la moins chère du marché). Avec en prime la possibilité de programmer en syntaxe Python dès maintenant:
Documentation
Ficher g3a
En raison des contraintes memoire des add-ins Casio, certaines fonctions de Xcas ne sont pas disponibles, mais les commandes utiles pour le lycée, les prépas scientifiques et la fac sont disponibles. Il n'y a pas non plus d'éditeur de script.


Pages : Précédente1, 2, 3, 4
LephenixnoirHors ligneAdministrateurPoints: 15993 Défis: 140 Message

Citer : Posté le 02/09/2019 16:12 | #


Parisse a écrit :
Pour KhiCAS sur la Casio, je n'utilise aucun environnement, tout est code dans les fichiers sources (a partir des syscalls d'affichage de pixels ou de texte). Un gros travail avait ete fait pour l'UI d'Eigenmaths, j'ai ajoute l'affichage des graphiques, l'editeur d'expression, j'ai pas mal ameliore l'afficheur de texte pour en faire un edtiteur de programmes et j'ai adapte le reste.

D'accord, donc ça ce serait facile à porter sur la Symbolibre pouvu que tu aies la SDL ou équivalent si je suis bien.

Je ne sais pas encore ce que je vais faire sur la Numworks. Se glisser dans l'appli de calculs va vite atteindre ses limites, car il faut interagir avec leur systeme qui est beaucoup trop restrictif (par exemple toutes leurs fonctions utilisateur sont unaires. Reecrire tout un environement comme sur la Casio est un travail important, et qui ne donnera pas de resultats tangibles avant un long moment. Sauf peut-etre en faisant le coucou dans le shell Python...

Tu ne peux pas porter l'environnement existant que tu as utilisé sur la Graph 90+E (et pas que) ? :o
ParisseHors ligneMembrePoints: 185 Défis: 0 Message

Citer : Posté le 03/09/2019 07:01 | #


Si, c'est probablement ce que je vais faire. Mais c'est beaucoup de travail, il va falloir remplacer tous les syscalls Casio en cherchant l'equivalent Numworks ou en le codant. Il faut decortiquer epsilon, certes avec le code source, mais c'est du C++, pas du C--. En plus a premiere vue, ca a l'air tres oriente evenement, pas sur qu'il y ait des equivalents pour GetKey par exemple. Et il n'y a pas de filesystem.
Qu'en est-il du code source de Symbolibre? On peut le voir quelque part maintenant?
LephenixnoirHors ligneAdministrateurPoints: 15993 Défis: 140 Message

Citer : Posté le 03/09/2019 09:59 | #


Hmm, pas facile, je vois. J'espère que la communauté autour de Numworks pourra aider en cas de besoin. Le coup du filesystem c'est un peu con.

Qu'en est-il du code source de Symbolibre? On peut le voir quelque part maintenant?

C'est honteux à admettre, mais l'administration n'a toujours pas bougé... on est bloqués...

Par contre je peux déjà te dire qu'on utilise Qt dans nos applications, et qu'on peut installer sans problème la SDL. Selon la façon dont seront construites les applications Symbolibre ce serait peut-être aussi possible d'embarquer des libs avec l'application (si elles ne sont pas déjà dans l'OS préinstallé).
ParisseHors ligneMembrePoints: 185 Défis: 0 Message

Citer : Posté le 03/09/2019 13:44 | #


Lephenixnoir a écrit :

J'espère que la communauté autour de Numworks pourra aider en cas de besoin.

Ca depend ce qu'on appelle communaute Numworks. J'ai bien peur qu'a l'heure actuelle, pas grand monde n'ait essaye de decortiquer epsilon, qui est en plus une cible mouvante (en partie a cause des contraintes de RAM et pour la N100 de flash). C'est aupres de Numworks que je pourrais esperer de l'aide, mais les derniers firmwares ont bloque le peu de calcul litteral qu'ils avaient, certainement pour pouvoir se vendre dans les pays hostiles au calcul formel, je ne sais pas du tout quelle attitude ils vont avoir vis-a-vis du portage de giac.


C'est honteux à admettre, mais l'administration n'a toujours pas bougé... on est bloqués...

Il n'est peut-etre pas inutile de leur faire remarquer que l'utilisation de code GPL dans un projet rendu public les force a diffuser l'ensemble du projet en GPL. S'ils ont effectivement les droits patrimoniaux sur votre code, c'est eux qui seraient inquietes en cas de recours.
LephenixnoirHors ligneAdministrateurPoints: 15993 Défis: 140 Message

Citer : Posté le 03/09/2019 13:55 | #


C'est aupres de Numworks que je pourrais esperer de l'aide, mais les derniers firmwares ont bloque le peu de calcul litteral qu'ils avaient, certainement pour pouvoir se vendre dans les pays hostiles au calcul formel, je ne sais pas du tout quelle attitude ils vont avoir vis-a-vis du portage de giac.

C'est sûr que s'ils veulent vendre leur calculatrice dans des pays où le cacul formel est interdit, l'existence d'un bon moteur de calcul formel installable assez facilement ne va pas leur simplifier les affaires. Enfin je suppose que leur business model avait prévu ce genre de cas, ils dont dû le voir venir. >_>

Il n'est peut-etre pas inutile de leur faire remarquer que l'utilisation de code GPL dans un projet rendu public les force a diffuser l'ensemble du projet en GPL.

Oui. Ils ne sont pas familiers avec l'open-source, mais je pense qu'avec un peu de discussion on peut les convaincre de la viabilité du modèle GPL.
ParisseHors ligneMembrePoints: 185 Défis: 0 Message

Citer : Posté le 03/09/2019 16:14 | #


Lephenixnoir a écrit :

C'est sûr que s'ils veulent vendre leur calculatrice dans des pays où le cacul formel est interdit, l'existence d'un bon moteur de calcul formel installable assez facilement ne va pas leur simplifier les affaires. Enfin je suppose que leur business model avait prévu ce genre de cas, ils dont dû le voir venir. >_>

Quoi qu'on fasse pour indiquer l'utlisation ou non de giac, c'est evidemment contournable par quelqu'un qui sait compiler un firmware. De meme quelqu'un qui le veut peut stocker des documents dans un firmware de N110 en resistant au mode examen.
LephenixnoirHors ligneAdministrateurPoints: 15993 Défis: 140 Message

Citer : Posté le 03/09/2019 16:23 | #


En effet, j'ai vu que jean-baptiste boric propose un bootloader pour faire des applications complètement indépendantes... c'est une bonne ouverture d'un côté, mais un peu dommage parce que ça fait du développement Numworks officieux.
ParisseHors ligneMembrePoints: 185 Défis: 0 Message

Citer : Posté le 05/10/2019 11:57 | #


Mise a jour de KhiCAS, qui corrige un certain nombre de bugs, en particulier dans la sauvegarde/restauration de session. La touche VARS permet maintenant d'afficher une estimation de la taille memoire occupee par les variables, et de la taille totale de memoire utilisee par KhiCAS, ce qui permet de purger des grosses variables que l'on n'utilise plus si la quantite de memoire disponible devient faible (je dirais en gros quand on depasse les 50K de memoire occupee estimee).
A noter que le parser consomme plus que ce que les variables occupent et fragmente alors le tas, on peut recuperer de la memoire en changeant d'application et en revenant sur KhiCAS.
LephenixnoirHors ligneAdministrateurPoints: 15993 Défis: 140 Message

Citer : Posté le 05/10/2019 12:02 | #


Merci pour cette mise à jour, liée au concours de rentrée si j'ai bien suivi sur TIP.

Est-ce techniquement faisable de libérer les données du parser automatiqmuement ? Ou peut-être qu'à chaque fois qu'on reparse il va se réinstaller dans la mémoire ?
ParisseHors ligneMembrePoints: 185 Défis: 0 Message

Citer : Posté le 05/10/2019 13:04 | #


Toutes les donnees utilisees par le parser sont liberees par des appels a delete/free, mais elles ne sont pas visibles immediatement quand on fait le raccourci OPTN-10^x-ON 5 9 6 3 5. D'ailleurs, est-ce qu'il existe un syscall pour acceder a cette information?
Experience: on ouvre KhiCAS et on execute le fichier du concours Python. La memoire disponible sur le tas diminue de 55K environ, alors que 35K sont indiques utilises par les variables en memoire. Si on purge le programme pk (7K d'occupation memoire estimee), c'est le quadruple qui devient disponible sur le tas, on est a 100K de libre. Si on parse juste le programme pk, on descend a 90K de libre. On a donc gagne presque 20K de tas en effacant le programme pk et en le reparsant. Je pense que la raison vient de la fragmentation du tas suite a toutes les operations faites par le parseur, ou peut-etre que l'affichage de la memoire disponible sur le tas affichee par le raccourci diagnostics est pessimiste.
J'ai donc beaucoup de mal a savoir ou est passee la memoire et comment optimiser la gestion des chaines de caracteres dans l'etape de traduction et dans le lexer.
Et il est difficile d'estimer la taille memoire occupee par les variables de KhiCAS a partir de laquelle il devient dangereux de lancer le parse d'un gros programme ou de lancer un calcul. A la louche, je conseillerais de ne pas depasser 40 a 50K de variables KhiCAS sur la 90 et 20K sur la 35eii (et ce sera pareil pour la Numworks que pour la 35eii). J'ai aussi mis (pour le moment) une limite a 8K sur la 90 et 3K sur la 35eii pour la taille d'un programme parsable. On peut bien sur decouper en deux (ou plus) et parser separement.
LephenixnoirHors ligneAdministrateurPoints: 15993 Défis: 140 Message

Citer : Posté le 05/10/2019 14:20 | #


D'ailleurs, est-ce qu'il existe un syscall pour acceder a cette information?

Hmm, je n'en connais pas...

Ah, je vois, c'est compliqué du coup. La fragmentation du tas est pas un truc que l'on peut gérer de l'extérieur.
ParisseHors ligneMembrePoints: 185 Défis: 0 Message

Citer : Posté le 31/10/2019 10:09 | #


Je viens de mettre a jour KhiCAS pour la 90: j'ai ajoute des garde-fous pour eviter des crash en cas de manque de memoire sur le tas. Le principe: si malloc renvoie a un constructeur d'objet KhiCAS un pointeur situe dans les 32 derniers Ko du tas, le flag d'interruption est mis a true comme si on avait tape sur la touche AC/ON, ce qui interrompt en principe les calculs. Un message avertit alors que la memoire est pleine et qu'il faut faire des purge ou bien restart. Ca laisse environ 60K pour stocker des variables, ce qui est deja pas si mal.
Si ca fonctionne, je devrais pouvoir faire de meme sur la 35eii.
Pages : Précédente1, 2, 3, 4

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 45 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd