Test de la Graph 35+E II, Partie 3 - Système et add-ins
Posté le 13/05/2019 15:23
Casio a annoncé pour la rentrée prochaine la nouvelle Graph 35+E II pour succéder à la Graph 35+E. Voyons ensemble ce qu'elle a dans le ventre !
Cet article est le dernier d'une série de trois articles portant sur les fonctionnalités de cette nouvelle calculatrice, du plus large au plus technique. Il y aura peut-être un article bonus à la sortie de Python !
Partie 1.
Premier contact et applications
Partie 2.
Transfert de fichiers
Partie 3. Support des add-ins et aspects matériels
Voyez aussi
le test de la Graph 35+E II par Critor (tiplanet.org).
Changements dans le système
On a pas mal de choses à voir ici. Commençons par regarder du côté du
menu constructeur que l'on lance en appuyant sur
[OPTN],
[×10^] et
[AC/ON] au démarrage, suivi de
[F1] et
[9].
On note que l'identification du système (
CY835A) a changé depuis les versions précédentes, mais les trois bits de matériel (
010) sont identiques. Voyons ce qu'on peut trouver sur la version du système :
Il s'agit donc d'un OS
03.00.2200. Le numéro de version majeure a changé, ce qui sous-entend qu'il y a eu de grands changements (incompatibles) par rapport aux versions précédentes. Notons que les versions
03.xx étaient jusque-là réservées aux Prizm et Graph 90+E, c'est inattendu !
Vous savez peut-être que les quatre derniers chiffres ne sont pas le numéro du patch comme on le fait
habituellement, mais donnent des informations sur la localisation et le matériel. En particulier, le dernier chiffre a longtemps été noté 0 pour les OS SH3 et 1 pour les OS SH4. Manifestement, CASIO a décidé d'enterrer cette convention avec les processeurs SH3 qui ont été changés, je le rapelle, il y a 7 ans.
L'autre nouvelle, c'est qu'on a affaire à
un nouveau bootcode daté de 2018, et c'est moins joyeux pour nous. En effet cela signifie que fxRemote ne pourra pas fonctionner immédiatement, et qu'il faudra de nouveau étudier le code pour le rendre compatible.
Le test de la mémoire nous donne également les checksums, que je vous mets pour la référence.
On note par ailleurs que
le menu de test caché à côté du menu constructeur en appuyant sur
[5],
[9],
[6],
[3] au lieu de
[F1],
[9], qui contient de nombreuses informations sur les contenus de la mémoire et le système, a disparu ! Il a probablement été assigné à une autre combinaison secrète, mais on ne l'a pas encore découverte.
Pas de modifications d'OS pour l'instant
Comme vous avez pu le voir dans l'article précédent, la ROM fait désormais 8 Mo au lieu des 4 Mo précédents. Cela permet d'avoir un OS d'environ 3.5 Mo et de garder une très grande mémoire de stockage de 3 Mo (on ne sait pas encore où est passé le reste).
L'inconvénient, c'est que l'OS avec Python de 3.5 Mo ne pourra pas être flashé facilement sur les anciennes Graph car l'ancienne mémoire n'est tout simplement pas assez grosse - il resterait 512 ko de mémoire de stockage au plus, et c'est seulement si l'OS veut bien fonctionner.
Le sens inverse est également difficile car fxRemote ne peut pas fonctionner tel quel sur le nouveau bootcode. Heureusement, on n'a pas de bonne raison d'installer un ancien OS sur la Graph 35+E II, car on perdrait :
• 1.5 Mo de mémoire de stockage en plus ;
• Le support des add-ins ;
• L'application Python.
Pour l'instant, aucun changement d'OS entre la Graph 35+E II et les anciennes Graph n'est donc possible.
Changement de l'écran
Il y a un changement majeur de matériel : la Graph 35+E II est en effet équipée d'une
variante de l'écran habituel des Graph, le T6K11 de Toshiba. Le nouvel écran a la même dimension, la même résolution et le même aspect que l'ancien, mais les commandes de communication ont changé. Le T6K11 a probablement été déprécié, obligeant CASIO à en utiliser un plus récent.
J'ai rapidement décortiqué le nouveau protocole, qui n'est pas très différent de l'ancien, en
désassemblant le syscall Bdisp_PutDisp_DD(). Les différences sont mineures et je les ai intégrées à gint comme implémentation de référence.
Le problème majeur est que
MonochromeLib ne sait communiquer qu'avec le T6K11, les add-ins utilisant MonochromeLib doivent donc être modifiés et recompilés pour pouvoir marcher !
Cela signifie que
les add-ins utilisant MonochromeLib peuvent être adaptés, mais les g1a ne marcheront pas directement. Un peu comme la Graph 90+E par rapport à son précédesseur, la Prizm, dont
un topic traque les portages.
Les add-ins utilisant fxlib sont binaire-compatibles, ce qui signifie que les g1a marchent tous seuls.
On déplore que
CasioPython n'exécute pas correctement les programmes et que
Windmill ne démarre pas. On n'a pas encore de piste sûre pour expliquer ces problèmes.
Problèmes sur le système de fichiers
Comme on l'a vu, le système de fichiers a également bien changé puisqu'il permet maintenant la création de sous-dossiers et peut être accédé par USB. Par contre, il semble y avoir eu des modifications également dans les appels de fonctions de
Bfile car les add-ins embarquant leur propre navigateur de fichiers ne marchent plus correctement.
On compte notamment
C.Basic et
CasioPython dans cette liste. Ci-dessous, C.Basic ne parvient pas à ouvrir un programme.
Le problème ne provient pas de l'add-in lui même car tous les programmes ont des problèmes d'une façon ou d'une autre. Insight, l'add-in de Simon Lothar permettant de fouiller la calculatrice, ne trouve carrément aucun fichier dans la mémoire.
Il faudra un peu de reverse-engineering pour comprendre où se situent les difficultés.
Changements dans la gestion de la RAM
Les calculatrices monochromes sont équipées depuis longtemps de 512 ko de RAM. Cependant, d'anciens modèles n'en possédaient que la moitié, et le système était donc fait pour se contenter de 256 ko. Depuis un moment, les add-ins utilisaient donc la deuxième moitié de la RAM à leur guise.
Cependant, Insight nous révèle des changements dans cette gestion !
Sur la capture ci-dessous, Insight indique que la fin du tas (la zone mémoire dans laquelle
malloc() puise ses ressources) se situe à l'adresse
0x88050400. Pour rappel, la mémoire physique peut être accédée par les adresses suivantes :
80000000-807fffff 8M ROM (avec cache)
88000000-8807ffff 512k RAM
a0000000-a07fffff 8M ROM (sans cache)
Autrement dit, le tas se situe désormais dans la deuxième moitié de la RAM. Et ce n'est pas tout ! Les plus habiles d'entre vous auront remarqué que la pile (
StackPtr) se trouve également dans cette deuxième moitié.
Cela n'est pas surprenant, car l'ancien tas faisait 48 ko et c'est assez peu pour un interpréteur Python. Casio a certainement commencé à exploiter la deuxième moitié de RAM à sa disposition pour satisfaire les besoins de Python. Les scripts de Critor révèlent que
le nouveau tas fait environ 90 ko, quasiment deux fois plus que l'ancien.
La mauvaise nouvelle du coup, c'est que les applications utilisant cette zone de la mémoire, comme C.Basic et MicroPython, ne pourront plus le faire librement. Rappelons que MicroPython peut utiliser 250 ko de mémoire grâce à cette technique, soit bien plus encore que les 90 ko disponibles sur l'application officielle. Il est peu probable que Casio utilise tout, mais il faut encore savoir quelle zone est employée.
État actuel du développement
Actuellement, le seul gros projet d'add-in sur Graph 35+E II est
le portage de KhiCAS par Bernard Parisse. Il utilise fxlib et n'a donc pas de problèmes de compatibilité.
MonochromeLib peut être rendue compatible facilement, mais les add-ins déjà compilés devront être recompilés, ou peut-être être passés à un outil similaire au SH4 Compatibility Tool pour fonctionner.
J'ai porté le nouveau driver d'écran dans gint, et désassemblé une partie du nouveau bootcode.
Conclusion
La Graph 35+E II apporte de grandes innovations matérielles... et donc de grands changements pour tous les add-ins qui ne se contentent pas du strict minimum offert par fxlib. On retiendra que :
• L'écran a changé donc MonochromeLib doit être adaptée et les add-ins recompilés.
• Les add-ins utilisant le système de fichiers glitchent sans que l'on sache encore pourquoi.
• La deuxième moitié de la RAM n'est plus entièrement libre.
• Le tas fait désormait 90 ko environ, au lieu de 48 ko.
Comme vous pouvez le voir, ce n'est pas une partie de plaisir, mais en anticipant bien on peut s'en sortir sans détour.
Cet article s'est avéré plus long que je ne l'avais imaginé parce que je parle beaucoup sur ce sujet. N'hésitez pas à réagir sur toute la série ou la Graph 35+E II en général dans les commentaires !
Et à bientôt sur Planète Casio !
Citer : Posté le 13/05/2019 17:08 | #
Super, merci à toi, j'ai appris plein de nouveaux trucs.
Par rapport à fxRemote, techniquement je confirme que l'on peut flasher l'OS Graph 35+E II sur Graph 35/75+E.
Comme l'OS Graph 35+E II fait ~3,5Mio et la ROM Graph 35/75+E 4Mio, ça rentre. Juste qu'il n'y aura plus beaucoup de mémoire de stockage.
Il suffit donc de prendre une image des 4 premiers Mio de la ROM de la Graph 35+E II et de :
- patcher l'ID de modèle dans le boot
- patcher la chaîne de version 3.00.0000 de l'OS en 2.02.0000 (seule version SH4 connue de fxRemote)
- invalider le code de vérification du modèle
- rajouter une somme de contrôle en 0x24FFF8 pour la zone 0x10000-0x24FFF7 (ça écrase 4 octets de l'OS, mais pas le choix vu que fxRemote a cet offset en dur)
- corriger la somme de contrôle en 0x3AFFF8 pour la zone 0x10000-0x3AFFF7
- cocher dans fxRemote d'écrire également ce qu'il pense être les pages d'archive et de backup
Par contre après tout ça, l'OS Graph 35+E II ne montre aucun signe de vie sur Graph 35/75+E.
Même pas l'écran OSUpdate ou une popup de plantage, rien qu'un écran blanc.
J'ignore totalement ce qui coince.
Citer : Posté le 13/05/2019 17:21 | #
Même pas l'écran OSUpdate ou une popup de plantage, rien qu'un écran blanc.
J'ignore totalement ce qui coince.
Facile : tu n'as pas patché le driver de l'écran.
Citer : Posté le 13/05/2019 17:25 | #
Oui, mais la calculatrice ne montre pas davantage de signe de vie en USB.
Donc ce n'est pas juste qu'elle n'affiche pas, il y a autre chose.
Citer : Posté le 13/05/2019 17:27 | #
Ah, dans ce cas il y a probablement autre chose oui. Mais difficile de savoir quoi, tant beaucoup de choses pourraient planter (eg. le système de fichiers suppose peut-être que la ROM fait 8 Mo).
Citer : Posté le 14/05/2019 18:35 | #
T'as fait comment pour obtenir le binaire de Bdisp_PutDisp_DD() et du bootcode ?
Citer : Posté le 14/05/2019 18:39 | #
En deux temps : d'abord j'ai dumpé l'OS avec un add-in simple (il suffit de sauvegarder une plage de la mémoire dans un fichier) car fxRemote ne marchait plus, et ensuite j'ai utilisé un outil de ma conception, fxos, pour désassembler et annoter. Ça te donne des trucs comme ça et après je commente dessus :
<13642 %028 Bdisp_PutDisp_DD>
13642: 2f86 mov.l r8, @-r15
13644: 2f96 mov.l r9, @-r15
13646: 2fa6 mov.l r10, @-r15
13648: 2fb6 mov.l r11, @-r15
1364a: 2fc6 mov.l r12, @-r15
1364c: 2fd6 mov.l r13, @-r15
1364e: 2fe6 mov.l r14, @-r15
13650: 4f22 sts.l pr, @-r15
13652: d673 mov.l <13820>(#0x80057a98), r6
13654: dd73 mov.l <13824>(#0x8800d431), r13
13656: 460b jsr @r6
13658: 0009 nop
1365a: 2008 tst r0, r0
1365c: 8936 bt <136cc>
1365e: d670 mov.l <13820>(#0x80057a98), r6
13660: 460b jsr @r6
On ne voit pas beaucoup d'annotations ici, mais ça fait la partie casse-pieds du boulot (chercher dans la doc à quoi correspond chaque adresse) à ta place.
Citer : Posté le 14/05/2019 18:44 | #
Je ne pensais pas qu'on pouvait lire ce genre de choses via un add-in, merci des renseignements
Citer : Posté le 14/05/2019 18:45 | #
Toute la ROM peut être lue, il suffit de regarder l'endroit qui t'intéresse entre 0x80000000 et 0x807fffff.
Citer : Posté le 14/05/2019 19:40 | #
Pour info, Casiopython utilise ML, et pourtant il marche
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 10/03/2020 16:29 | #
Bonjour!
Le menu de test ne fonctionne pas sur 35+e II et des trucs bizarres apparaissent lorsqu’on effectue la combinaison de touches! Faire n’importe quelle combinaison (à part [5] [9] [6] [3] ou [F1] [9] évidemment) reste sur le message « Diagnostic mode », ce qui est normal. Mais faire [5] [9] [6] [3] donne des trucs bizarres... Je vais lister les effets, et attention, c’est du lourd! Peut-être que certains passionnés trouveront une utilité à ces infos...
Je peux avoir loupé certains trucs, ne m’en voulez pas!
Quand on fait la combinaison…
Dans tous les cas : Aller dans un autre sous-menu (je connais pas le nom donc je vais dire logiciel) et revenir ensuite répare tous les problèmes, mais pas éteindre et rallumer la calculette. On peut interagir avec la calculette normalement, même si le popup est encore affiché (voir ci-dessous)
Sur le menu principal : Le popup disparaît, rien d’anormal ne se passe.
Dans RUN-MAT : Le popup disparaît en partie, seulement au niveau de la ligne de saisie, le reste du message reste affiché. Appuyer sur EXE le fait disparaître entièrement. Le menu des touches F1 à F6 (bas de l’écran) disparait et les touches ne fonctionnent pas.
Dans STAT : Le popup disparaît en entier et toutes les touches F(…) ne fonctionnent pas, sauf le bouton View Window (Pourquoi?)
Dans E-ACT : Sur le menu des e-acts, les F(…) disparaissent mais on peut toujours ouvrir un(e?) e-act avec [EXE], ce qui résous les problèmes.Le popup reste jusqu’à ce qu’on appuie sur replay les flèches ou [EXE].
Depuis une e-act ouverte : Le popup disparaît et tout fonctionne normalement (même les touches F…?)
Dans S-SHT : Idem que dans STAT, mais les touches F fonctionnent pour rentrer une valeur (les options de saisie), et continent ensuite à ne pas fonctionner lorsqu’on est pas en mode édition de cellule.
Dans GRAPH, depuis le menu des fonctions : Idem que dans STAT sauf que G⚡️T apparaît en appuyant sur [SHIFT]. Les touches F fonctionnent normalement en mode tracée de graph ou saisie de fonctions.
Je n’ai pas encore testé le reste (et je le noterais sur ce commentaire quand je l’aurais fait)(mais le shell python vaut le coup, regardez ça) mais je PENSE que ça arrive pour cette raison :
Le popup reste quelquefois car l’écran n’est pas rafraichi, donc rien ne va écraser l'image de ce popup (puisqu’il ne ferme pas correctement) donc des bouts restent.
Pour les touches F, c’est plus compliqué. Je pense que comme quand on éteint la calculette on doit appuyer sur [SHIFT], les touches F basculent sur leur fonction secondaire à laquelle on peut accéder uniquement en appuyant sur [SHIFT]. Quand elle s’allume en diagnostic mode, les touches F gardent leur état secondaire (on peut le voir en activant ce mode sur le menu GRAPH, car [F3] indique V-win même si on n’appuie pas sur [SHIFT]. Mais comme appuyer sur [EXIT], entrer puis sortir du mode usine ou du mode test se termine en soft reset (l’équivalent d’appuyer sur RESET au dos de la calculatrice), ça ne pose pas de problème. Mais faire la combinaison du mode test sur ce modèle de calculette fait passer le popup en arrière plan, et on reprend contrôle de la calculatrice. Or les touches sont dans leur état secondaire alors que [SHIFT] n’est pas pressé, donc elle ne sait pas trop quoi faire et désactive ces touches. C’est aussi pourquoi V-win s’affiche et fonctionne correctement (il faut appuyer sur [SHIFT] pour y accéder). Je pense donc que les touches sont bloquées dans leur état secondaire en quelque sorte.
J'espère que ça a été utile!
Citer : Posté le 10/03/2020 16:35 | #
Wow, je n'avais pas pensé à lancer le menu diagnostique avec une application ouverte, et je pensais pas que ça allait bugger à ce point !
L'analyse est très intéressante, sans tester je ne vois clairement rien à rajouter. Est-ce que ça pourrait avoir un lien avec le code ? Du genre si la popup s'ouvre avec SHIFT, peut-être que le désactiver d'abord avant de taper le code aiderait ? (Sinon le 5 n'est pas pris en compte...)
Citer : Posté le 10/03/2020 16:40 | #
La popup s’ouvre avec [OPTN], [x10], [ON] quand la calcu est éteinte.
Or, pour l’éteindre, faut appuyer sur...
...SHIFT!
Donc je ne pense pas qu’il y ait de moyen d’ouvrir le mode diagnostic sans appuyer sur SHIFT, mais toute idée est la bienvenue!
Ajouté le 10/03/2020 à 16:42 :
Au fait, l’image s’affiche? J’ai un mauvais wifi, je vois pas...
Citer : Posté le 10/03/2020 16:42 | #
Ah, mais la pression de SHIFT disparaît quand on appuie sur une autre touche (genre AC/ON). En plus ça ne survirait pas au redémarrage, par exemple quand tu démarres dans le menu SHIFT n'est pas actif.
Par contre il se peut que la popup active SHIFT silencieusement depuis la version 3 juste pour nous embêter pour que le code change.
Edit : Non tes images ne s'affichent pas, tu dois mettre le lien vers l'image, pas vers une page web qui l'affiche !
Citer : Posté le 10/03/2020 16:46 | #
Non, appuyer sur SHIFT ou AC sur la popup ne change rien, de même pour après avoir tapé le code et être entré dans le « mode bug » (j'appelle ça comme ça, après tout je pense je l’ai découvert!)
Ajouté le 10/03/2020 à 16:49 :
Voilà, les images s’affichent!
Ajouté le 10/03/2020 à 16:56 :
Et ouah! Le shell python est complètement cassé avec ça!
Désolé pour le triple post
Citer : Posté le 20/10/2020 12:19 | #
j'ai testé des add-in sur la calculatrice et ca crash
je suis toujour dans le menu principal et les boutons ne réagis plus la seule solition et de retirer et remettre les piles
j'ai utilisé le convertiseur mais ca ne change rien
Citer : Posté le 20/10/2020 12:25 | #
Peut tu nous dires l'add ins que tu as testé ainsi que le modèle de ta calculatrice ?
(Et de toute façon, vous pouvez pas dire le contraire)
MultipliCasio
RDM Calculs
Back Mirror
A Switch To The Top C
pedroBzh2 Invité
Citer : Posté le 20/10/2020 19:23 | #
jetpack joyride, evasion surv, runner
mais l'horloge de phenix noir marche
Citer : Posté le 20/10/2020 19:23 | #
(c'étais moi)
Citer : Posté le 20/10/2020 19:25 | #
Tkt on t'avais reconnu, t'as un style un peu nooby qui se rate pas.
Un peu de lecture : La compatibilité des add-ins sur la Graph 35+E II
Citer : Posté le 20/10/2020 19:26 | #
ok
Ajouté le 20/10/2020 à 19:27 :
dans cette liste il y a jetpack joyride, j'ai testé et ca marche pas la calculatrice crash