Hollyhock-2 : jailbreak C/assembleur pour fx-CP400
Posted: 14 Oct 2021, 11:01
Les calculatrices graphiques Classpad sont le haut de gamme de Casio. Elles combinent un moteur de calcul formel et un écran tactile résistif à stylet.
Les derniers modèles appartiennent à la génération Classpad II et présentent en prime un écran couleur. Il s'agit à ce jour des :
Les derniers modèles appartiennent à la génération Classpad II et présentent en prime un écran couleur. Il s'agit à ce jour des :
- fx-CP400+E en France (rentrée 2016)
- fx-CG500 en Amérique du Nord (rentrée 2017)
- fx-CP400 dans le reste du monde (rentrée 2013)
Les fx-CP400 rencontrent du succès dans certains pays mais clairement pas en France ; c'est une combinaison de différents facteurs qui explique cela, tout dépend de ce que l'on fait avec.
D'une part, bien que leur processeur soit identique à celui de la superbe Graph 90+E (un 32 bits Renesas SH4 cadencé à 117,96 MHz), les fx-CP400 sont des modèles assez lents. Plusieurs opérations s'achevant dans la minute sur d'autres modèles peuvent ici dans certains cas nécessiter plusieurs minutes, et parfois encore pire :
Rien à avoir avec le moteur de calcul, mais les affichages graphiques au sein des programmes ont également le défaut d'être très lents. En conséquence il n'y a que très peu de développement de programmes pour fx-CP400, donc peu de sites qui en distribuent, et sans doute que ça joue sur les achats dans les pays où les utilisateurs se sentent concernés par la possibilité de rajouter des programmes comme en France.
Jusqu'au modèle Classpad 330 de la rentrée 2007, on pouvait développer des applications en langage C et assembleur puis les compiler en fichiers .cpa, contournant ainsi à la fois la lenteur et les limitations du langage de programmation interprété Basic.
Hélas à compter de la Classpad 330+ de la rentrée 2012, Casio a fait le choix de fermer complètement la gamme aux développements tiers. Le format des applications devient le .c1a. Casio semble avoir lourdement taillé dans la gestion des applications, dans le sens où le code des applications est maintenant intégré en dur dans le système d'exploitation. Les fx-CP400 ont repris le même fonctionnement avec le format .c2a.
Les applications possibles sont ainsi restreintes aux seules applications officielles et applications développées en partenariat avec Casio. C'est très simple, il n'en existe que 2 à notre connaissance :
D'une part, bien que leur processeur soit identique à celui de la superbe Graph 90+E (un 32 bits Renesas SH4 cadencé à 117,96 MHz), les fx-CP400 sont des modèles assez lents. Plusieurs opérations s'achevant dans la minute sur d'autres modèles peuvent ici dans certains cas nécessiter plusieurs minutes, et parfois encore pire :
- programmes (déjà arrivé avec un algorithme du BAC S)
- graphiques
- tableau de variations
Rien à avoir avec le moteur de calcul, mais les affichages graphiques au sein des programmes ont également le défaut d'être très lents. En conséquence il n'y a que très peu de développement de programmes pour fx-CP400, donc peu de sites qui en distribuent, et sans doute que ça joue sur les achats dans les pays où les utilisateurs se sentent concernés par la possibilité de rajouter des programmes comme en France.
Jusqu'au modèle Classpad 330 de la rentrée 2007, on pouvait développer des applications en langage C et assembleur puis les compiler en fichiers .cpa, contournant ainsi à la fois la lenteur et les limitations du langage de programmation interprété Basic.
Hélas à compter de la Classpad 330+ de la rentrée 2012, Casio a fait le choix de fermer complètement la gamme aux développements tiers. Le format des applications devient le .c1a. Casio semble avoir lourdement taillé dans la gestion des applications, dans le sens où le code des applications est maintenant intégré en dur dans le système d'exploitation. Les fx-CP400 ont repris le même fonctionnement avec le format .c2a.
Les applications possibles sont ainsi restreintes aux seules applications officielles et applications développées en partenariat avec Casio. C'est très simple, il n'en existe que 2 à notre connaissance :
- Physium, application officielle avec le tableau périodique des éléments et la bibliothèque de constantes physiques
- Algy2, application partenaire de vérification des étapes d'un calcul littéral, comme par hasard payante et sans aucune concurrence possible suite aux choix de la fermeture par Casio
Dans une actualité précédente, nous te parlions des travaux de the6p4c.
Il avait réussi suite à un lourd travail de rétro-ingénierie et de documentation, à installer un système d'exploitation modifié sur sa fx-CP400.
Le système en question permettait d'exécuter du code machine préalablement injecté lors de la modification. Oui, c'était la 1ère exécution de code machine tiers sur fx-CP400 !
Il avait réussi suite à un lourd travail de rétro-ingénierie et de documentation, à installer un système d'exploitation modifié sur sa fx-CP400.
Le système en question permettait d'exécuter du code machine préalablement injecté lors de la modification. Oui, c'était la 1ère exécution de code machine tiers sur fx-CP400 !
C'était bien évidemment insuffisant en l'état ; il n'était pas envisageable de devoir réinstaller un nouveau système d'exploitation à chaque fois que tu souhaitais lancer du code différent.
Il fallait quelque chose pour permettre de charger à chaud tes programmes en langage machine, et choisir lequel exécuter.
the6p4c avait en ce sens commencé à développer Hollyhock, un jailbreak pour ta fx-CP400, mais n'y avait hélas plus touché depuis 3 ans.
Le projet Hollyhock n'ayant pas atteint la release, tu devais déjà t'embêter à le compiler toi-même. Mais de plus même après ça, son installation correcte nécessitait nombre de manipulations bien trop techniques pour l'utilisateur final.
Il fallait quelque chose pour permettre de charger à chaud tes programmes en langage machine, et choisir lequel exécuter.
the6p4c avait en ce sens commencé à développer Hollyhock, un jailbreak pour ta fx-CP400, mais n'y avait hélas plus touché depuis 3 ans.
Le projet Hollyhock n'ayant pas atteint la release, tu devais déjà t'embêter à le compiler toi-même. Mais de plus même après ça, son installation correcte nécessitait nombre de manipulations bien trop techniques pour l'utilisateur final.
Et bien aujourd'hui nous y sommes enfin. SnailMath a repris le travail de the6p4c et nous sort Hollyhock-2, une version cette fois-ci bien plus facile à installer !
Enfin après une attente interminable de 8 années, nous avons notre jailbreak à la Ndless / arTIfiCE pour les fx-CP400 !
Hollyhock-2 contient différents éléments :
Enfin des jeux fx-CP400 qui peuvent bénéficier à pleine vitesse des capacités du processeur et de l'écran !
Enfin après une attente interminable de 8 années, nous avons notre jailbreak à la Ndless / arTIfiCE pour les fx-CP400 !
Hollyhock-2 contient différents éléments :
- le patch modifiant le système d'exploitation pour lui rajouter un bouton permettant l'exécution de code arbitraire
- un lanceur de programmes en langage machine (fichier run.bin) lancé par le bouton précédent, t'affichant donc la liste des programmes lançables
- quelques exemples de jeux en langage machine
Enfin des jeux fx-CP400 qui peuvent bénéficier à pleine vitesse des capacités du processeur et de l'écran !
Précisons que le patch modifiant le système d'exploitation cible à ce jour la seule version 2.01.2000 remontant à la rentrée 2017.
(ce qui veut dire que si tu installes Hollyhock-2, tu renonces à ce jour aux améliorations apportées depuis puisque nous en sommes aujourd'hui à la version 2.01.7000, et notamment les corrections de valeurs du tableau périodique des éléments avec la version 2.01.6000)
L'installation se passe uniquement sous Windows à ce jour. Le patch est appliqué à chaud, pendant que tu exécutes le logiciel officiel de mise à jour de la calculatrice en version 2.01.2000.
Voici les instructions d'installation :
Voilà, ta calculatrice est maintenant enfin capable de lancer des programmes en langage machine !
Ceux-ci peuvent être de différents types :
L'utilisation d'Hollyhock-2 est très simple. Il modifie le menu de l'application Système, mettant le lanceur de code Hollyhock-2 à la place de la configuration de l'unité imaginaire i/j.
Ce menu t'exécute alors le fichier run.bin si tu l'as placé au bon endroit, ce dernier te listant alors les programmes en langage machine exécutables.
(ce qui veut dire que si tu installes Hollyhock-2, tu renonces à ce jour aux améliorations apportées depuis puisque nous en sommes aujourd'hui à la version 2.01.7000, et notamment les corrections de valeurs du tableau périodique des éléments avec la version 2.01.6000)
L'installation se passe uniquement sous Windows à ce jour. Le patch est appliqué à chaud, pendant que tu exécutes le logiciel officiel de mise à jour de la calculatrice en version 2.01.2000.
Voici les instructions d'installation :
- Mets le dossier Snail2021/ du .zip téléchargé obligatoirement sur ton bureau
- Lance le logiciel Snail2021.exe présent dedans, et qui te guidera dans tout le reste de la procédure d'installation
- Installe le logiciel ResourceHacker, qui servira à patcher automatiquement l'OS au sein du fichier .dll de Casio
- Lance le logiciel officiel de mise à jour en version 2.01.2000
- Confirme les différentes boîtes de dialogue du logiciel officiel jusqu'à-ce qu'il te demande de connecter la calculatrice (ne pas confirmer cette dernière boîte)
- Retourne sur le fenêtre de Snail2021 et valider en tapent
Entrée
; Snail2021 va alors récupérer et patcher le fichier .dll de mise à jour de Casio. - Une fois que Snail2021 te confirme avoir récupéré les fichiers, retourne sur la fenêtre du logiciel officiel de mise à jour pour annuler l'installation et la fermer.
- Retourne sur la fenêtre de Snail2021 pour confirmer le patching de l'OS en validant avec
Entrée
. - Il est maintenant temps d'installer l'OS modifié sur ta calculatrice. La version 2.01.2000 est très probablement plus ancienne que tu as déjà sur la machine en question. Pour installer donc une version inférieure à celle que ta calculatrice exécute, tu as besoin de mettre cette dernière en mode de récupération de l'OS, sans quoi l'installation sera refusée :
- maintiens enfoncées les 3 touches
EXP
^
Clear
- sans relâcher ces 3 touches, enfonce et relâche le bouton
RESTART
au dos - la calculatrice affiche alors un l'écran texte suivant :
- Code: Select all
*****************
* *
* OS Error *
* *
* Please update *
* *
* OS. *
* *
*****************
- maintiens enfoncées les 3 touches
- Sur la fenêtre de Snail2021, valide alors l'installation de l'OS modifié en tapant
Entrée
. - Patiente le temps de l'installation de l'OS, plusieurs minutes.
- Une fois l'installation terminée, copie les fihiers suivants du dossier Snail2021 sur ta calculatrice (directement à la racine et pas dans un sous-dossier) :
- run.bin (obligatoire pour le bon fonctionnement d'Hollyhock-2, c'est lui qui te permettra de choisir le programme assembleur à exécuter)
- et si tu le souhaites, les fichiers .hhk contenant des exemples de jeux (MineSnail qui est un démineur, Snake, et Tetris30)
Voilà, ta calculatrice est maintenant enfin capable de lancer des programmes en langage machine !
Ceux-ci peuvent être de différents types :
- du langage machine directement exécutable, assemblé sur ordinateur à partir de code assembleur SH4 ou compilés à partir de code source C
- des programmes directement modifiables sur ta calculatrice (dans l'éditeur de programmes) contenant une représentation hexadécimale du code machine
L'utilisation d'Hollyhock-2 est très simple. Il modifie le menu de l'application Système, mettant le lanceur de code Hollyhock-2 à la place de la configuration de l'unité imaginaire i/j.
Ce menu t'exécute alors le fichier run.bin si tu l'as placé au bon endroit, ce dernier te listant alors les programmes en langage machine exécutables.
Précisons que Hollyhock-2 respecte le mode examen de Casio, refusant dans ce contexte de lancer run.bin et donc t'empêchant entre autres d'exécuter des programmes pouvant t'afficher des données/informations interdites.
Le fonctionnement de ce blocage est extrêmement simple. En mode examen, l'icône indiquant la charge de batterie en bas à droite change de couleur. Elle est :
Hollyhock-2 vérifie tout simplement la couleur de cette icône, et refuse de lancer run.bin si cette dernière n'est pas grise.
Nous verrons bien ce qu'en pense Casio, si il y a une réaction ou pas. Mais paradoxalement, le fait que le code source d'Hollyhock-2 soit public, permet à n'importe qui de malintentionné de le modifier pour faire sauter cette sécurité.
Le fonctionnement de ce blocage est extrêmement simple. En mode examen, l'icône indiquant la charge de batterie en bas à droite change de couleur. Elle est :
- grise hors mode examen
- verte dans les 15 minutes suivant l'activation du mode examen
- puis bleue en mode examen au-delà des 15 premières minutes
Hollyhock-2 vérifie tout simplement la couleur de cette icône, et refuse de lancer run.bin si cette dernière n'est pas grise.
Nous verrons bien ce qu'en pense Casio, si il y a une réaction ou pas. Mais paradoxalement, le fait que le code source d'Hollyhock-2 soit public, permet à n'importe qui de malintentionné de le modifier pour faire sauter cette sécurité.
Reste maintenant à savoir si Hollyhock-2 va pouvoir relancer l'intérêt envers la fx-CP400 ainsi que ses ventes, dans les pays qui comme en France avaient laissé de plus en plus ce modèle de côté.
À ce jour nous en sommes loin, il n'existe pas grand chose comme programmes pour le moment.
Un problème est aussi que Hollyhock-2 nous sort bien tard. La fx-CP400+E sortie en 2016 n'a certes que 5 ans. Mais ce modèle n'a fait que rajouter une diode examen à la la fx-CP400 qui existait déjà depuis 2013 et continue à être commercialisée aujourd'hui hors de France.
La fx-CP400 a ainsi aujourd'hui plus de 8 ans, c'est un record, jamais aucun modèle couleur ou formel de Casio n'avait duré aussi longtemps sans remplacement.
Il est possible que la pandémie ait ralenti les choses, mais pour nous la fx-CP400 est en fin de vie et devrait être remplacée très prochainement par un nouveau modèle, à moins d'un changement de stratégie de Casio qui pourrait avoir décidé de ne poursuivre le développement du logiciel de Mathématiques intégré Classpad que dans sa version en ligne Classpad.net ayant l'intérêt d'être directement exécutable sur les smartphones/tablettes de plus en plus utilisés au lycée.
Jusqu'à présent l'histoire n'a jamais offert de succès aux jailbreaks sortant aussi tardivement. On peut citer :
Nous souhaitons bien évidemment le meilleur à Hollyhock-2 et ne demandons qu'à-ce que l'avenir balaye nos craintes, mais il n'empêche qu'après 8 ans il est maintenant bien tard pour juste commencer l'aventure assembleur sur fx-CP400.
À ce jour nous en sommes loin, il n'existe pas grand chose comme programmes pour le moment.
Un problème est aussi que Hollyhock-2 nous sort bien tard. La fx-CP400+E sortie en 2016 n'a certes que 5 ans. Mais ce modèle n'a fait que rajouter une diode examen à la la fx-CP400 qui existait déjà depuis 2013 et continue à être commercialisée aujourd'hui hors de France.
La fx-CP400 a ainsi aujourd'hui plus de 8 ans, c'est un record, jamais aucun modèle couleur ou formel de Casio n'avait duré aussi longtemps sans remplacement.
Il est possible que la pandémie ait ralenti les choses, mais pour nous la fx-CP400 est en fin de vie et devrait être remplacée très prochainement par un nouveau modèle, à moins d'un changement de stratégie de Casio qui pourrait avoir décidé de ne poursuivre le développement du logiciel de Mathématiques intégré Classpad que dans sa version en ligne Classpad.net ayant l'intérêt d'être directement exécutable sur les smartphones/tablettes de plus en plus utilisés au lycée.
Jusqu'à présent l'histoire n'a jamais offert de succès aux jailbreaks sortant aussi tardivement. On peut citer :
- la TI-81 : sortie en 1990, elle n'a eu son jailbreak Unity qu'en 2010, soit après 20 ans, avec un succès quasiment nul.
- la TI-73 : sortie en 1998, elle n'a eu son jailbreak Mallard que 7 ans après en 2005. Il était déjà bien tard, le public intéressé par le développement assembleur avait déjà pris l'habitude d'éviter ce modèle d'entrée de gamme, cette sortie n'a pas intéressé grand monde et n'a pas changé les habitudes : extrêmement peu de programmes assembleur sortis pour cette plateforme.
- la TI-82 : sortie en 1993 elle a eu son premier jailbreak en 1997, un meilleur délai mais qui restait quand même important. De plus en 2001 Texas Instruments a lourdement modifié les TI-82 afin d'économiser sur les coûts de production, leur faisant utiliser la carte électronique très différente de la TI-83 avec une version système spéciale 19.006, cassant ainsi la compatibilité. 8 ans après le lancement cela n'intéressait plus grand monde, les mises à jour des jailbreaks se sont faites attendre, et n'ont pas toujours conservé la compatibilité avec les programmes assembleur produits pour les anciennes versions. En conséquence de ces délais et incidents, une bibliothèque de programmes assembleur nettement réduite par rapport à ce qui est sorti pour d'autres modèles contemporains comme la TI-85.
Nous souhaitons bien évidemment le meilleur à Hollyhock-2 et ne demandons qu'à-ce que l'avenir balaye nos craintes, mais il n'empêche qu'après 8 ans il est maintenant bien tard pour juste commencer l'aventure assembleur sur fx-CP400.
Téléchargements pour Windows:
Tutos-vidéo :
Code source : https://github.com/SnailMath/hollyhock-2