Forum Casio - Actualités


Index du Forum » Actualités » Test de la Graph 35+E II, Partie 3 - Système et add-ins
LephenixnoirEn ligneAdministrateurPoints: 14375 Défis: 136 Message

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 !



CritorEn ligneAdministrateurPoints: 1232 Défis: 0 Message

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.
LephenixnoirEn ligneAdministrateurPoints: 14375 Défis: 136 Message

Citer : Posté le 13/05/2019 17:21 | #


Critor a écrit :
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.
CritorEn ligneAdministrateurPoints: 1232 Défis: 0 Message

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.
LephenixnoirEn ligneAdministrateurPoints: 14375 Défis: 136 Message

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).
ItytHors ligneMembrePoints: 209 Défis: 0 Message

Citer : Posté le 14/05/2019 18:35 | #


T'as fait comment pour obtenir le binaire de Bdisp_PutDisp_DD() et du bootcode ?
salut je m'appelle sacha et je viens du bourg-palette et voici mon meilleur ami pikachu
LephenixnoirEn ligneAdministrateurPoints: 14375 Défis: 136 Message

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 :

% fxos disasm g35peII -s 0x028

<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.
ItytHors ligneMembrePoints: 209 Défis: 0 Message

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
salut je m'appelle sacha et je viens du bourg-palette et voici mon meilleur ami pikachu
LephenixnoirEn ligneAdministrateurPoints: 14375 Défis: 136 Message

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.
ZezombyeHors ligneRédacteurPoints: 1604 Défis: 12 Message

Citer : Posté le 14/05/2019 19:40 | #


Pour info, Casiopython utilise ML, et pourtant il marche
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 52 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