Page 1 of 1

1ère programmation OS modifié fx-CP400+E

Unread postPosted: 29 Jan 2018, 14:22
by critor
Il est possible de reprogrammer l'OS des Casio Graph 35+E et Graph 75+E, et d'y faire ainsi tourner des OS modifiés ou tiers, même si ce dernier cas relève encore à ce jour de la science-fiction.

Toutefois cela nécessite l'outil fxRemote dont le code source n'a jamais été publié et que les auteurs ne mettent plus à jour depuis des années. :mj:
Les autres modèles Graph 25+E, Graph 90+E et fx-CP400+E n'étaient donc en pratique pas reprogrammables à ce jour.


Mais les choses viennent de changer grâce the6p4c. Ce dernier avait déjà analysé et documenté le format utilisé par l'image d'OS dans le fichier temporaire OSupdateDLL.dll extrait lors de la mise à jour des calculatrices, une simple compression GZip. Il a pris le temps d'expliquer sa démarche pas à pas avec moultes détails, si bien que l'article est accessible sans connaissances techniques bien poussées.

Une fois l'image extraite il devient donc possible en théorie de la modifier, de la recompresser, puis de la réintégrer dans le fichier DLL grâce à un éditeur de ressources.

Théorie que the6p4c s'est empressé de mettre en pratique.

Mais question. Où injecter notre propre code ? Dans l'immédiat il faut trouver une adresse fixe qui tout en étant appelable ne soit pas utilisée par le système en temps normal, afin de ne pas générer de conflit.

47064707the6p4c fait le choix pour cela d'utiliser le mode Debug. C'est un mode qui est proposé lorsque l'on appelle le menu de diagnostics de la machine :
  • éteindre la calculatrice
  • allumer la calculatrice en maintenant les touches
    =
    et
    EXP
  • taper alors rapidement
    et
    z
  • taper alors rapidement
    3

92549253Cette manipulation rajoute un bouton
Check
à l'écran de sélection de la langue, permettant de lancer un programme de tests.

Et voici, the6p4c nous signe en ce jour historique la toute première programmation d'un système modifié sur calculatrice fx-CP400, le bouton
Check
ne lançant plus le programme de tests de Casio mais déclenchant l'affichage de deux lignes de texte, comme tu peux le constater toi-même ci-contre ainsi que sur la démo-vidéo ci-dessous :

Précisons que la mise en pratique avec le bouton
Check
n'est absolument pas détournable afin de contourner le mode examen. En effet, le mode Debug est annulé à chaque redémarrage de la calculatrice, dont le redémarrage suivant l'activation du mode examen, et qu'en prime le menu de diagnostics n'est pas appelable une fois en mode examen.

Par contre ce qui est remarquable, c'est que la modification du fichier OSupdateDLL.dll va bien au-delà de la fx-CP400+E et peut être appliquée aux autres logiciels de mise à jour Casio fonctionnant sur le même principe, soit pour les modèles Graph 90+E et même Graph 75+E si un jour pour une raison ou pour une autre fxRemote n'était plus exploitable. :bj:

En attendant the6p4c est passé à la configuration d'un compilateur C pour fx-CP400+E, histoire d'être capable de sortir rapidement des bouts de code un peu plus évolués qu'un simple affichage de quelques lignes de texte. A suivre... ;)


Sources :

Re: 1ère programmation OS modifié fx-CP400+E

Unread postPosted: 29 Jan 2018, 22:04
by Lionel Debroux
Ce travail que j'avais vu chez @binnitamshah mérite d'être salué, tant pour le travail de RE que pour l'effort de rédaction :)
La méthode utilisée pour modifier le DLL pourra toujours servir ailleurs, oui.
On attend avec impatience la suite.

Pas de vraie protection contre le transfert d'OS arbitraires, donc... c'est juste que presque tout le monde se fout de ce modèle rare dont l'OS n'est pas très supérieur à celui des modèles dix ans plus vieux dont il est dérivé :D

Re: 1ère programmation OS modifié fx-CP400+E

Unread postPosted: 02 Feb 2018, 06:52
by The6P4C
Hey everyone!

Sorry this isn't in French. I've exactly 0 experience in French and I know Google Translate is terrible so I'll just write in English.

I've been working for a while and I've actually got a lot more information about the calculator than I've published on my blog. I've been able to write a small stub of code which can be placed in the much easier to access "Imaginary Unit" setup menu (accessible through System App -> System Menu -> Imaginary Unit menu, no debug mode necessary) which loads a binary file placed on the flash and runs it. This has meant I've been able to avoid having to flash the device (which can take almost 5 minutes to do) when testing out code. I haven't been able to successfully return from the stub back to the calculator code yet, meaning the calculator must be reset with the rear button once the code has finished running, but it's still WAY quicker than re-flashing every time.

Obviously in having to do this I've investigated the file system functions quite heavily (open, close, fstat, read, write, etc.) and I've written quite a bit of documentation about them. I haven't discovered a system call interface like I've seen on the Prizm model yet, so I'm relying on using the direct addresses of each of the functions to call them from my own code. I'm pretty sure there won't be one though - since the device doesn't support add-ins it wouldn't make sense for CASIO to add a system call interface.

I'm not exactly ready to publicly release my information yet, since I'd like to confirm stuff and build a platform where people can run their own code easily before I do. When I've got that, I'll definitely release something akin to a basic SDK. Then the real work can get started and the device properly investigated.

Glad to know you guys have found my posts and think it's cool.

-- The6P4C

Re: 1ère programmation OS modifié fx-CP400+E

Unread postPosted: 02 Feb 2018, 07:55
by Lionel Debroux
Thanks for posting here :)

Sorry this isn't in French. I've exactly 0 experience in French and I know Google Translate is terrible so I'll just write in English.

Don't worry, a bunch of persons post purely in English on TI-Planet ;)

(about the Imaginary Unit mode stub)

Interesting. Saving flashing time is precious for development.

Obviously in having to do this I've investigated the file system functions quite heavily (open, close, fstat, read, write, etc.) and I've written quite a bit of documentation about them.

Great :)

I haven't discovered a system call interface like I've seen on the Prizm model yet, so I'm relying on using the direct addresses of each of the functions to call them from my own code. I'm pretty sure there won't be one though - since the device doesn't support add-ins it wouldn't make sense for CASIO to add a system call interface.

Indeed.

I'm not exactly ready to publicly release my information yet, since I'd like to confirm stuff and build a platform where people can run their own code easily before I do.

This approach was used for Ndless on the Nspire, it's pretty sound.

Keep up the good work ;)

Re: 1ère programmation OS modifié fx-CP400+E

Unread postPosted: 03 Feb 2018, 00:20
by critor
Thank you for your nice post @The6P4C :)