Posté le 15/07/2018 12:09
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 157 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
Citer : Posté le 02/09/2019 16:12 | #
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.
Tu ne peux pas porter l'environnement existant que tu as utilisé sur la Graph 90+E (et pas que) ? :o
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?
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.
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é).
Citer : Posté le 03/09/2019 13:44 | #
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.
Citer : Posté le 03/09/2019 13:55 | #
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. >_>
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.
Citer : Posté le 03/09/2019 16:14 | #
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.
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.
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.
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 ?
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.
Citer : Posté le 05/10/2019 14:20 | #
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.
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.
Ajouté le 17/01/2020 à 09:59 :
Ajout d'un lien vers une video faite par Eric SCHRAFSTETTER, universite d'Angers, dans le cadre du DAEU (diplome universitaire donnant l'equivalent du bac pour poursuivre des etudes a la fac), avec des exercices de niveau lycee.
Ajouté le 20/02/2020 à 15:37 :
Mise a jour pour la 90 et la 35eii:
* l'edition de matrice permet maintenant de rajouter une ligne ou une colonne (touche ,) ou effacer une ligne ou une matrice (touche DEL).
* on peut taper DEL pour saisir la commande d'effacement d'une variable dans le menu VARS
Quelques bugs corriges (grace au simulateur de la Numworks dans gdb, les portages de Xcas sur les deux calculatrices partageant une grande base de code en commun).
Ajouté le 19/11/2020 à 10:42 :
Mise a jour pour 90 et 35eii, tres peu de changements, un ou deux bugs corriges, la fonction getKey() a ete renommee en get_key() pour des raisons de coherence entre les divers ports de KhiCAS et MicroPython. Cette fonction get_key() renvoie dorenavant des codes entre 0 et 5 pour les touches du curseur, EXIT, toujours pour des raisons de coherence.
Juliot Invité
Citer : Posté le 19/11/2020 17:39 | #
Des fois il y a un message system ERROR lorsque j’effectue des calculs sur KhiCAS
Quelqu’un peut m’aider pour résoudre ce problème
Citer : Posté le 30/11/2020 20:03 | #
C'est un plantage. Il faudrait savoir quelle est la commande qui a provoque cette erreur pour pouvoir la reproduire et esperer la corriger.
Ajouté le 19/10/2021 à 09:43 :
Petite mise a jour corrigeant 3 bugs d'interface:
1/ dans l'edtiteur d'expressions: si un argument d'une puissance est selectionne, l'appui sur backspace provoquait un crash
2/ toujours dans l'editeur d'expression: l'edition de la selection plantait si elle etait trop large
3/ dans l'historique, l'edition d'un niveau et sa reexecution (ainsi que les niveaux suivants) pouvait provoquer un crash
Graph 90
Graph 35eii
Citer : Posté le 19/10/2021 09:47 | #
Merci beaucoup pour la maintenance (qu'on serait bien incapables de faire !). J'ai rarement de choses à ajouter mais c'est toujours apprécié
Citer : Posté le 18/12/2021 09:21 | #
Apres environ 2 ans passes a developper sur d'autres calculatrices et suite aux deconvenues avec la politique de Numworks, je redecouvre la Graph 90, et je suis assez enthousiasme par les capacites de la machine (bien plus de RAM et de flash que la Numworks pour a peu pres le meme prix), capacites qui sont pour le moment sous-exploitees dans KhiCAS.
Grace aux conseils et aux tests de Lephenixnoir - j'en profite pour le remercier publiquement ici - je suis en train de developper une mise a jour de KhiCAS pour Casio Graph 90. Cette mise a jour devrait permettre d'acceder a plus de memoire RAM mais aussi a des ameliorations d'interface portees de KhiCAS pour Numworks/TI Nspire CX, pour l'instant la coloration syntaxique et le parenthese match en ligne de commande du shell.
Les personnes interessees peuvent telecharger une version alpha ici
khicas.g3a alpha
A moyen terme, j'espere pouvoir charger du code supplementaire dans de l'espace RAM inutilise et augmenter les fonctionnalites du noyau de calcul. Je pense par exemple au moteur de rendu 3d, qui en association avec les commandes de geometrie et 3d de Giac permettrait de faire des figures dans l'espace avec des fonctionnalites un peu differentes de celles de Graphe3d de Casio, cf. KhiCAS sur Numworks/Nspire.
Citer : Posté le 18/12/2021 14:36 | #
Merci ! On apprécie nous aussi ton intérêt renouvelé pour la machine. L'échelle de KhiCAS (utilise toute la ROM et beaucoup de fonctionnalités) teste un peu les limites de la machines (à la fois côté matériel et côté stabilité logicielle) donc c'est pas toujours facile, mais je pense que ça en vaut la peine. Parmi les add-ins qui se font sur Planète Casio, s'il y en a bien un qui augmente la valeur de la machine par rapport au marché, c'est bien celui-là
Citer : Posté le 18/12/2021 16:39 | #
Je viens de rajouter la completion en ligne de commande, si on tape curseur vers le bas, l'index des commandes est affiche, avec positionnement au premier endroit ou il y a une commande qui commence par ce qu'il y a avant le curseur.
J'ai toujours un probleme de corruption apres un cyclr OFF/ON. Cette fois-ci j'arrive a le mettre en evidence avec la tortue logo, sans qu'il puisse y avoir d'interference avec l'allocation dynamique de memoire.
On lance KhiCAS, on charge la session https://www-fourier.univ-grenoble-alpes.fr/~parisse/casio/sessions/sapin.xw, puis EXIT pour entrer dans l'editeur de scripts puis EXE pour interpreter puis EXIT, puis sapin(4), qui renvoie un sapin "normal", mais si on fait OFF/ON le sapin est abime.
Niveau code: les etapes de la tortue sont dans un tableau situe dans les 512K de ram. L'UI est tres simple (elle ne fait pas appel a giac), uniquement a une methode draw() de trace de la tortue (dans kdisplay.cc), cf. ci-dessous. Et pourtant le sapin est abime, il doit se passer quelque chose... que je ne peux pas debuggueur (l'emulateur n'a pas de support pour off).
void displaylogo(){
#ifdef TURTLETAB
xcas::Turtle t={tablogo,0,0,1,1};
#else
xcas::Turtle t={&turtle_stack(),0,0,1,1};
#endif
DefineStatusMessage((char*)"+-: zoom, pad: move, EXIT: quit", 1, 0, 0);
DisplayStatusArea();
while (1){
int save_ymin=clip_ymin;
clip_ymin=24;
t.draw();
clip_ymin=save_ymin;
int key;
GetKey(&key);
if (key==KEY_CTRL_EXIT || key==KEY_PRGM_ACON || key==KEY_CTRL_MENU || key==KEY_CTRL_EXE || key==KEY_CTRL_VARS)
break;
if (key==KEY_CTRL_UP){ t.turtley += 10; }
if (key==KEY_CTRL_PAGEUP) { t.turtley += 100; }
if (key==KEY_CTRL_DOWN) { t.turtley -= 10; }
if (key==KEY_CTRL_PAGEDOWN) { t.turtley -= 100;}
if (key==KEY_CTRL_LEFT) { t.turtlex -= 10; }
if (key==KEY_SHIFT_LEFT) { t.turtlex -= 100; }
if (key==KEY_CTRL_RIGHT) { t.turtlex += 10; }
if (key==KEY_SHIFT_RIGHT) { t.turtlex += 100;}
if (key==KEY_CHAR_PLUS) { t.turtlezoom *= 2;}
if (key==KEY_CHAR_MINUS){ t.turtlezoom /= 2; }
}
}
...
Ajouté le 01/01/2022 à 22:37 :
Une nouvelle version de KhiCAS (1.5.2) est disponible au telechargement pour les Graph 90
https://www-fourier.univ-grenoble-alpes.fr/~parisse/casio/khicas.g3a
Les principales nouveautes: coloration syntaxique et parenthese match en ligne de commande du shell KhiCAS, completion avec la touche shift-fraction (touche alpha G) ou plus simplement fleche vers le bas depuis le shell, et aussi nettement plus de memoire disponible (environ 500K contre moins de 128 auparavant, en combinant des allocateurs memoire: un specificique optimise pour KhiCAS, kmalloc de Lephenixnoir et le malloc de Casio). Quelques bugs ont ete corriges, j'espere que cette version est plus stable que la precedente. A noter un petit changement d'habitudes a prendre, c'est l'obligation de passer MENU shift ON pour eteindre.
Cette version devrait etre la version stable ultime (sauf bugfixes) compatible avec tous les modeles Prizm. Je vais ensuite travailler sur une version specifique Graph 90 (FXCG50?) qui devrait permettre de mettre a jour le noyau de calcul vers Giac 1.7 et ajouter les fonctionnalites disponibles sur Numworks et Nspire CX (par exemple la geometrie analytique, le moteur de rendu 3d, peut-etre aussi le shell MicroPython avec tous les modules de KhiCAS)
Ajouté le 14/01/2022 à 08:29 :
Lorsqu'on connecte la calculatrice en USB, le menu habituel apparait mais si on tape F1 rien ne se passe tant qu'on n'a pas tape MENU, ca vient du fait que c'est mon code qui gere maintenant le clavier en appelant GetKeyWait OS. Est-ce qu'il est possible de detecter l'evenement USB pour automatiquement simuler une frappe de la touche MENU?
Citer : Posté le 14/01/2022 09:27 | #
Est-ce que tu autorises le retour au menu dans le GetKeyWait du coup ?
À ma connaissance ce n'est pas possible de détecter l'événement parce que tout est en fait en interne dans la fonction GetKeyWait(). Quand tu la l'appelles le fait n'est pas encore établi et ensuite ton code ne s'exécute plus jusqu'à ce que tout soit fini. À part des trucs hideux genre mettre un timer et regarder périodiquement si la popup est apparue graphiquement, je ne vois rien.
Citer : Posté le 14/01/2022 09:39 | #
Non, je gere moi-meme la touche MENU, l'appel est le suivant
int ret=GetKeyWait_OS(&col,&row, 2 /* KEYWAIT_HALTON_TIMERON*/, timeout_delay /*timeout_period*/, 1 /* 0: handle menu key*/, &keycode) ;
Quand on est dans le shell KhiCAS, si on branche la calc, le menu F1 etc. apparait, et l'appui sur F1 est pris en compte, mais ensuite plus rien ne se passe tant qu'on n'a pas tape sur une touche.
Je vais mettre ca dans la doc. C'est pas tres grave, au sens ou il n'y a pas de crash, et puis meme si les gens ne lisent pas la doc, ils vont bien finir par appuyer sur une touche.
Citer : Posté le 14/01/2022 15:39 | #
Oui je pense que tu as raison, ça ressemble à un genre de problèmes extrêmement casse-pieds à aborder pour finalement pas grand-chose.