π
<-

Hollyhock-2 : jailbreak C/assembleur pour fx-CP400

Hollyhock-2 : jailbreak C/assembleur pour fx-CP400

Unread postby critor » 14 Oct 2021, 11:01

7230Les 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 :
  • 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)
Pour simplifier, nous les désignerons par la suite en tant que fx-CP400.

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 :
  • programmes (déjà arrivé avec un algorithme du BAC S)
  • graphiques
  • tableau de variations
Le problème est ainsi transversal aux diverses applications, et on ne peut clairement pas incriminer le processeur. L'autre hypothèse permettant alors d'expliquer tout cela, c'est le moteur de calcul numérique, ces manipulations ayant en commun d'effectuer une série de calculs. Il semble que le moteur de calcul numérique ait du mal dans certains cas, possiblement parce que le moteur de calcul formel interfère d'une façon non optimale.

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
Les fichiers .c1a/c2a semblent ainsi ne contenir que de quoi donner accès au code de l'application déjà intégrée au système, ainsi que les nom et icône à afficher au menu d'accueil.

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 ! :bj:

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.

14708Et 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 ! :bj:

Enfin après une attente interminable de 8 années, nous avons notre jailbreak à la Ndless / arTIfiCE pour les fx-CP400 ! :D

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 ! :bj:

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 :
  1. Mets le dossier Snail2021/ du .zip téléchargé obligatoirement sur ton bureau
  2. Lance le logiciel Snail2021.exe présent dedans, et qui te guidera dans tout le reste de la procédure d'installation
  3. Installe le logiciel ResourceHacker, qui servira à patcher automatiquement l'OS au sein du fichier .dll de Casio
  4. Lance le logiciel officiel de mise à jour en version 2.01.2000
  5. 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)
  6. 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.
  7. 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.
  8. Retourne sur la fenêtre de Snail2021 pour confirmer le patching de l'OS en validant avec
    Entrée
    .
    14706
  9. 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 :
    1. maintiens enfoncées les 3 touches
      EXP
      ^
      Clear
    2. sans relâcher ces 3 touches, enfonce et relâche le bouton
      RESTART
      au dos
    3. la calculatrice affiche alors un l'écran texte suivant :
      Code: Select all
      *****************
      *               *
      *   OS Error    *
      *               *
      * Please update *
      *               *
      *      OS.      *
      *               *
      *****************
  10. Sur la fenêtre de Snail2021, valide alors l'installation de l'OS modifié en tapant
    Entrée
    .
  11. Patiente le temps de l'installation de l'OS, plusieurs minutes.
  12. 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 ! :bj:
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

14707L'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.

14709Pré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 :
  • 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é. :mj:

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 :
  • 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
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 47%
 
Posts: 41934
Images: 15609
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Hollyhock-2 : jailbreak C/assembleur pour fx-CP400

Unread postby Adriweb » 14 Oct 2021, 13:51

Meme si ca ne remporte pas un succès fou (on verra bien), mieux vaut tard que jamais, comme on dit, au moins l'exploit technique existe :)

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 78.9%
 
Posts: 14733
Images: 1119
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: Hollyhock-2 : jailbreak C/assembleur pour fx-CP400

Unread postby DoOmnimaga » 14 Oct 2021, 16:24

Mieux vaut tard que jamais. :)

Juste dommage que je n'ai plus en ma possession une fx-CP400 acheté à "gros rabais" (par gros rabais, je veux dire la modique somme de 105 euros, ce qui reste beaucoup trop cher pour les performances de la machine), car j'aurais bien aimé la voir en action avec de l'ASM.
ImageImageImageImage
User avatar
DoOmnimagaPremium
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 20.2%
 
Posts: 693
Images: 51
Joined: 21 Feb 2012, 12:04
Location: Quebec, Canada
Gender: Male
Calculator(s):
MyCalcs profile
Class: 11eme annee scolaire termine
YouTube: DJOmnimaga
Twitter: DJOmnimaga
Facebook: dreamofomnimaga.page

Re: Hollyhock-2 : jailbreak C/assembleur pour fx-CP400

Unread postby SlyVTT » 14 Oct 2021, 19:57

C'est clair que ceci serait arrivé au bout d'un ou deux ans, la donne aurait été tout autre.
On doit pouvoir faire des trucs sympas en ASM/C, surtout si on sait accéder au stylet.
Je connais pas la machine, mais je trouve bizarre que même via le hook, on voit encore la barre d'icones du bas de l'écran.
Ca a pas l'air d'être un jailbreak "à la Ndless", mais plutôt une ouverture à l'API des fonctions de l'OS.
Du coup je sais pas si ça reste pas encore limité au niveau des performances.
Cela dit l'exploit mérite un bravo.

Sly
Some works in progress :
The GUI Toolkit NF for nSpireMyShmup for fxCG-50Magic Light for Casio Graph 90+E
and
Magic Light for nSpire CX/CX-II
Simple Text Editor for nSpireOutRun for Casio Graph 90+E
95%
50%
100%
75%
100%
And more to come ... stay tuned
User avatar
SlyVTTPremium
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 45.4%
 
Posts: 521
Images: 31
Joined: 19 Jan 2021, 09:41
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
GitHub: SlyVTT

Re: Hollyhock-2 : jailbreak C/assembleur pour fx-CP400

Unread postby critor » 14 Oct 2021, 20:00

Merci pour vos retours. :)

SlyVTT wrote:Je connais pas la machine, mais je trouve bizarre que même via le hook, on voit encore la barre d'icones du bas de l'écran.

Sur cette photo ?
14708
Ce sont tout simplement des boutons tactiles physiques en bas d'écran ; ils sont hors de la dalle de pixels.
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 47%
 
Posts: 41934
Images: 15609
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Hollyhock-2 : jailbreak C/assembleur pour fx-CP400

Unread postby SlyVTT » 14 Oct 2021, 20:04

Oui c'est ça, OK, quand on connait pas, on dirait vraiment que ca fait partie de l'ecran tactile et que c'est dans la zone d'affichage.
Donc c'est normal qua ca reste apparent ;-)
Ceci explique cela :-D
Some works in progress :
The GUI Toolkit NF for nSpireMyShmup for fxCG-50Magic Light for Casio Graph 90+E
and
Magic Light for nSpire CX/CX-II
Simple Text Editor for nSpireOutRun for Casio Graph 90+E
95%
50%
100%
75%
100%
And more to come ... stay tuned
User avatar
SlyVTTPremium
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 45.4%
 
Posts: 521
Images: 31
Joined: 19 Jan 2021, 09:41
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
GitHub: SlyVTT

Re: Hollyhock-2 : jailbreak C/assembleur pour fx-CP400

Unread postby fabcvlr » 15 Oct 2021, 08:41

J'attends avec impatience un portage de Python sur la CP400 !
User avatar
fabcvlr
Niveau 5: MO (Membre Overclocké)
Niveau 5: MO (Membre Overclocké)
Level up: 12%
 
Posts: 10
Joined: 12 Feb 2012, 09:59
Gender: Male
Calculator(s):
MyCalcs profile

Re: Hollyhock-2 : jailbreak C/assembleur pour fx-CP400

Unread postby Hamza.S » 15 Oct 2021, 09:21

fabcvlr wrote:J'attends avec impatience un portage de Python sur la CP400 !

C'est vrai que ça serait une bonne chose car ça manque cruellement sur ce modèle jusqu'à présent
Image
User avatar
Hamza.SAdmin
Niveau 17: GM (Grand Maître des calculatrices)
Niveau 17: GM (Grand Maître des calculatrices)
Level up: 29%
 
Posts: 4500
Images: 18
Joined: 07 Nov 2014, 00:43
Gender: Male
Calculator(s):
MyCalcs profile

Re: Hollyhock-2 : jailbreak C/assembleur pour fx-CP400

Unread postby critor » 15 Oct 2021, 21:26

Il y aurait beaucoup à faire en effet : Python, KhiCAS, Doom, Mario, Geometry Dash, émulateurs Nintendo... surtout que là contrairement à d'autres modèles, on bénéficie d'un véritable système de fichiers en Flash. :bj:
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 47%
 
Posts: 41934
Images: 15609
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor


Return to News Casio

Who is online

Users browsing this forum: No registered users and 12 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
816 utilisateurs:
>788 invités
>21 membres
>7 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)