Upsilon, l’environnement Numworks sur calculatrice Casio

Bernard.Parisse@univ-grenoble-alpes.fr

Mai 2023

Table des matières

Résumé: Upsilon est une évolution de la dernière version redistribuable de l’OS des calculatrices Numworks. Il vient récemment d’être porté sur les calculatrices Casio Graph 90. Dans ce document, je présente rapidement l’utilisation de l’environnement Numworks sur les Casio, puis un petit historique de son développement. Je conclus sur les potentialités d’un tel développement si les décideurs en tenaient compte.

1  Portage sur Casio

Début mai 2023, “Heath” a annoncé sur le forum anglophone cemetech le portage sur les Casio FXCG50 et Graph 90 d’Upsilon, ce qui permet d’utiliser l’environnement Numworks de 2021 sur une calculatrice Casio. Ce portage fait suite à un prototype de portage pour TI Nspire par Kerry Shen en janvier 2023.

L’installation est extrêmement simple, on récupère upsilon.g3a puis on branche la Casio Graph 90 sur l’ordinateur, on tape F1 pour faire reconnaitre la calculatrice comme une clef USB par l’ordinateur, on copie le fichier upsilon.g3a sur la clef, et voilà. Ensuite il suffit de se déplacer dans le MENU principal Casio jusqu’à voir Upsilon puis on le lance avec EXE et on se retrouve comme sur une Numworks de mi-2021, avec quelques ajouts dont notamment la réactivation de certaines fonctionnalités de calcul symbolique (développement, dérivée) et un module Python de calcul scientifique. Pour plus d’informations sur l’environnement Numworks, on pourra consulter le manuel de l’OS Epsilon de Numworks (attention, il y a quelques différences suite aux évolutions récentes d’Epsilon) et le site d’Upsilon. La touche OPTN remplace la touche Toolbox de Numworks, la touche MENU remplace la touche Home. Pour quitter l’environnement Numworks et revenir dans l’environnement Casio, il faut effectuer un appui long sur la touche MENU ou taper sur la touche DEL depuis le menu principal Numworks.

Voici par exemple l’éditeur Python :

J’ai fait quelques modification au menu principal de l’environnement Numworks pour pouvoir échanger des données entre les deux environnements. En tapant sur la touche → (au-dessus de la touche AC/ON) puis un numéro de sauvegarde de 1 à 9, on peut sauvegarder l’état actuel de la Numworks. En tapant sur la touche VARS on peut échanger des scripts Python entre les deux environnements ou restaurer une sauvegarde de la calculatrice.

On peut modifier la sélection ci-dessus en rouge avec les touches du curseur, si on tape sur EXE ou sur la touche →, on copie le fichier sélectionné d’un environnement à l’autre (pour un script Python recopié vers Upsilon, l’appui sur EXE au lieu de → indique à Upsilon que le script doit être automatiquement exécuté quand on ouvre la console d’exécution). Lorsqu’un répertoire est sélectionné dans l’environnement Casio, EXE permet d’entrer dans ce répertoire (parent_dir permet de remonter dans l’arborescence et l’appui sur la touche de division permet de remonter directement au niveau racine). L’appui sur la touche OPTN permet d’afficher la liste de tous les fichiers/enregistrements au lieu de n’afficher que les scripts Python (sur Casio, les fichiers trop gros ne sont pas affichés). Une fois les échanges entre environnements effectués, on peut taper sur EXIT pour quitter.

Un des avantages de l’utilisation de l’environnement Numworks dans la Casio, c’est qu’il permet de sauvegarder des scripts dans la flash de la calculatrice (plus de risque de les perdre en cas de reset), scripts que l’on peut ensuite échanger en local avec un PC, ce qui n’est pas possible avec l’OS de Numworks (à ce jour, le constructeur propose uniquement la sauvegarde sur ses propres serveurs, ce qui nécessite une connexion cable PC-calculatrice et une connexion Internet, sans parler de la dépendance au constructeur).

Notez qu’on peut accéder aux scripts Python de l’environnement Casio avec la commande import, sans avoir besoin de les recopier dans l’environnement Numworks. Ceci permet de disposer de toute la mémoire flash de stockage de Casio de 16M, soit 256 fois plus que les 64K de stockage de l’environnement Numworks (sur les 32M de flash de la Casio, 16M sont réservés à l’OS et 16M aux données et programmes utilisateur, par comparaison la Numworks n’a que 8M de flash et l’OS Epsilon de Numworks n’offre pas de solution de stockage de données utilisateur en flash), . On dispose aussi sur la Casio de 46 fois plus de mémoire de travail que sur une Numworks pour programmer en Python. Du point de vue matériel, la Casio dispose de 8M de RAM contre 256K sur les Numworks N0110 (les nouvelles N0120 ont 564K de mémoire mais pour l’instant seuls 256K sont utilisés), Python dispose de 2.9M de mémoire de travail sur les Casio et de 64K sur une Numworks.

Un autre petit avantage de la Casio Graph 90, elle dispose d’une résolution d’écran un peu supérieure (+15%: 224x396 contre 240x320). Et on bénéficie de tout l’environnement Casio (dont tableur, géométrie, application 3d, et tous les addins développés par la communauté, par exemple χCAS).

2  Un peu d’histoire

2.1  Numworks, Epsilon et Upsilon.

Numworks est apparu sur le marché fin aout 2017 et a conquis en quelques années un tiers environ du marché des calculatrices graphiques en France. Une de leurs spécificités sur laquelle Numworks a pas mal communiqué, c’est que le logiciel de leur calculatrice était open-source, c’est très certainement un des arguments clefs qui leur a permis de se faire connaitre au début. Pour être précis, en 2017, la licence d’Epsilon était assez restrictive, car elle ne permettait pas la redistribution. La communauté s’en est plaint, et a été entendue en mai 2018, la licence est devenue plus souple, permettant les modifications et la redistribution à des fins non commerciales. La communauté a alors pu développer des évolutions d’Epsilon, dont les plus connues sont principalement Omega, et dans une moindre mesure Upsilon et Khi. Ces trois firmwares alternatifs ont en commun de pouvoir exécuter des applications tierces, dont mon système de calcul formel χCAS (sur les modèles N0110 commercialisés à partir de l’été 2019).

Malheureusement, en 2020/2021, Numworks a considéré que l’ouverture des sources ayant permis ces projets était contraire à ses intérêts économiques pour développer son activité à l’étranger (Portugal, Pays-Bas, Etats-Unis), en raison du risque de fraude au mode examen et des examens où le calcul formel est interdit. Foulant le pied à “ses convictions”, Numworks a pris un virage sécuritaire à 180 degrés, ils ont changé la licence d’Epsilon qui n’offre plus aucune liberté de modification/redistribution, et surtout ils ont développé un logiciel permettant de verrouiller les calculatrices (Numworks est le seul à pouvoir effectuer des modifications et mises à jours de l’OS). Ce verrouillage a été appliqué perfidement à des dizaines de milliers de calculatrices au cours des mises à jours conseillées par Numworks depuis la rentrée 2021, Numworks n’a jamais averti les utilisateurs qu’ils allaient perdre la possibilité d’utiliser les logiciels développés par la communauté (calcul formel, tableur, graphes/géométrie 3d, ...) ainsi que les fonctionnalités de calcul symbolique qu’ils avaient eux-mêmes développées (ces fonctionnalités sont réactivées dans Upsilon). Au printemps 2022, une faille dans le verrouillage a permis à quelques utilisateurs de déverrouiller leurs calculatrices, mais la faille a été bien vite corrigée, et depuis il n’existe aucun moyen de déverrouiller une Numworks sans ouvrir la calculatrice.

Ce virage sécuritaire a provoqué l’arrêt du développement d’Omega, le “fork” le plus actif d’Epsilon. Upsilon est né de la volonté de poursuivre malgré tout un firmware alternatif, avec des nouvelles fonctionnalités dont l’intégration d’un module Python de calcul scientifique (ulab) et d’une liseuse de documents compatible avec LATEX. Khi est un fork que j’ai optimisé pour l’utilisation de χCAS. Aucun de ces deux forks ne peut intégrer les améliorations d’Epsilon versions 16 et au-delà.

En guise de compensation, Numworks a ajouté la possibilité d’installer des programmes développés par des tiers, mais dans des conditions tellement restrictives que pratiquement personne ne propose de tels programmes. En effet, non seulement ces programmes sont inaccessibles en mode examen (alors qu’avant le verrouillage on pouvait utiliser un firmware tiers avec χCAS en mode examen), mais ils sont inactivés au moindre crash ou reset, rendant tout développement très fastidieux et toute utilisation aléatoire. Les fonctionnalités proposées par le kit de développement sont minimalistes en comparaison de Casio. Mais surtout pour installer une application tierce il faut passer par le site de Numworks, qui peut donc décider de les censurer à sa guise. Le minimum que la communauté attendait pour une calculatrice présentée comme open-source, c’est un environnement de développement au niveau de celui proposé par Casio!

2.2  Le développement natif chez les autres constructeurs

Casio est à ce jour parmi les constructeurs celui qui est le plus ouvert aux développements tiers sur le milieu de gamme graphique. La possibilité d’ajouter des programmes (“addins”) au menu principal est prévue dans l’OS et Casio a publié dans les années 2010 un kit de développement logiciel (fonctionnant sous Windows), qui a lui-même donné naissance à plusieurs kits utilisant le compilateur libre gcc. Le plus récent, gint, est activement maintenu par “Lephenixnoir”, c’est avec ce kit que Upsilon a été porté sur les Casio.

TI a toujours lutté le développement tiers sur les TI Nspire (il n’existe pas pour le moment de version ndless compatible avec les versions à jour de l’OS des Nspire CX et CX2) et a fermé la porte de l’assembleur sur les TI83/84, il existe un contournement, artifice, pour le moment TI ferme les yeux.

HP n’a publié aucune information permmettant de faire du développement natif sur les HP Prime, ce qui était possible auparavant sur les HP48, 49 et 50. Il existe par contre un projet d’OS alternatif ExistOS pour les HP39gii, et rien n’empêche matériellement d’avoir la même chose pour les HP Prime G1.

3  Conclusion.

Pouvoir utiliser l’environnement Numworks sur une calculatrice Casio Graph 90 est une prouesse technique qui pourrait faciliter la vie des enseignants et élèves, en permettant l’intégration aisée d’un parc hétérogène de calculatrices Numworks/Graph 90. L’environnement Numworks est ègalement porté sur les calculatrices TI Nspire compatibles avec ndless (version optimisée pour les CX et CX2). On pourrait imaginer avoir la même chose sur d’autres calculatrices suffisamment puissantes, il existe d’ailleurs un firmware prototype basé sur Epsilon pour HP Prime par Jean-Baptiste Boric. Malheureusement, il y a un obstacle institutionnel à la diffusion d’un environnemet unique pour plusieurs calculatrices : c’est le mode examen, lorsqu’il est activé, l’environnement Numworks n’est plus accessible sur les Casio. Une raison de plus de supprimer ce mode examen inégalitaire (cf. mon article à ce sujet).

Cela favoriserait une saine concurrence entre constructeurs, il n’est pas normal que Numworks continue à vendre des dizaines de milliers de calculatrices bridées en mémoire (des calculatrices Alzheimer en quelque sorte) au niveau des années 1990 après avoir longuement moqué leurs concurrents sur le thème des calculatrices qui n’ont pas évolué depuis 30 ans.

Inversement, la possibilité de tester l’environnement Numworks sur Casio et TI Nspire pourrait permettre à Numworks de se faire connaitre à l’étranger là où TI et Casio sont plus connus et inciter Casio et TI à améliorer leurs propres applications. J’envisage aussi à moyen terme d’ajouter la possibilité d’utiliser le noyau de calcul formel de Xcas directement depuis l’application Calculs d’Upsilon.

4  Références

Le code source du projet Upsilon Numworks. et mes modifications.

Les discussions sur le développement sont sur ce fil sur tiplanet et ce fil en anglais sur cemetech