Page 1 of 2

Pourquoi l'anti-downgrade des TI-83 Premium CE est néfaste

Unread postPosted: 02 Apr 2017, 16:21
by critor
Dans un article précédent, nous découvrions que pour la toute première fois dans l'histoire de la famille des calculatrices TI-z80, les TI-83 Premium CE munies du Boot Code 5.1.5.0014 étaient dotées d'une protection anti-downgrade.

Le fonctionnement de cette protection est très similaire à celui de celle des TI-Nspire, à la seule différence qu'il ne tient pas compte du numéro de version complet mais juste des 3 premiers chiffres :
  • Pour toute tentative d'installation d'un nouvel OS, les 3 premiers chiffres de la version sont vérifiés en début de transfert, lors de l'envoi du certificat.
    Si ils sont inférieurs à la version minimale autorisée pour la calculatrice en question, l'installation est refusée.
  • Si l'installation est acceptée, tous les OS depuis la version 5.1.5 incluent dans leur certificat une deuxième information de version, la version minimale autorisée suite à l'installation.
    Si cette version est supérieure à celle de la calculatrice, elle est alors enregistrée dans la mémoire Flash permanente, dans une zone qu'aucun menu officiel ne permet de réinitialiser.

Cette protection ne semble pas fonctionnelle sur les toutes premières TI-83 Premium CE commercialisées, munies d'un Boot Code 5.0.0.89.
C'est la raison pour laquelle elle na été découverte que si tardivement.

Pour les machines affectées, voici le détail à ce jour :
Version OS
installé
Nouvelle
version minimale
autorisée
5.1.55.1.5
5.2.05.1.5
5.2.15.1.5
5.2.25.1.5

À ce jour, on pourrait donc nous objecter que Texas Instruments n'a pas exagéré, évitant pour le moment de bloquer systématiquement tout retour à un OS antérieur comme sur TI-Nspire.
Si tu disposes d'une TI-83 Premium CE, peu importe que tu lui installes un OS 5.1.5 à 5.2.2, tu pourras quand même revenir en 5.1.5.



Nous admettrons même que cette protection anti-downgrade est une conséquence perverse logique/légitime de l'adoption du mode examen en France.
Vu que plusieurs des dernières mises à jour d'OS modifient le comportement du mode examen, il serait très grave de permettre à un candidat de revenir à un ancien mode examen qui justement posait problème.



Mais ça, c'était la théorie.
En pratique sur sur TI-Nspire, la dernière version n'est pas toujours le meilleur choix selon les besoins et le modèle.
La protection anti-downgrade systématique empêchant tout retour en arrière immédiatement après une mise à jour a nombre de fois été très nuisible aux utilisateurs.
Il y a les cas où la nouvelle version apportait des bugs, de calculs ou autres...
Et même des cas où la nouvelle version ne démarrait pas correctement dans certaines situations, ce qui bloquait donc définitivement la machine :
  • systèmes 2.1+ sur les TI-Nspire munies d'un Boot2 1.1
  • systèmes 3.6+ sur les prototypes TI-Nspire DVT
  • ...



Est-ce que ce sera mieux sur TI-83 Premium CE ?
Visiblement non... À peine Texas Instruments a-t-il mis en place cette protection, que nous avons déjà des motifs de dénoncer cet abus.

Normalement, ta calculatrice devrait rester parfaitement fiable tant que tu t'en tiens à l'utilisation d'applications officielles et de programmes TI-Basic.
À partir du moment où tu commences à utiliser des applications non officielles (ce qui n'existe pas à ce jour pour TI-83 Premium CE) ou des programmes assembleur, il est "normal" de pouvoir rencontrer des plantages.

Et bien non, cette règle n'est pas respectée. :#non#:
Depuis la version d'OS 5.1.0, la TI-83 Premium CE dispose d'un bug très grave (déjà reporté à TI) faisant planter la machine et détruire tout le contenu de la mémoire de travail (RAM) en seulement 3 lignes de TI-Basic ! :o
Il suffit de faire appel à une liste complexe vide, ce qui sur les versions 5.0.0 antérieures déclenchait un simple erreur de dimension. :mj:

Une fois la ligne déclencheuse atteinte, la calculatrice se bloque avec un écran zébré :
7368
Code: Select all
EffÉcran
Disp "Setting list type to cplx:
{→L₁
Disp L₁
Output(2,1,"L₁=
Disp "List type is now cplx-list
0→dim(L₁
Disp dim(L₁
Output(4,1,"Emptying list: dim(L₁)=
Disp "Asking for whole content
Disp "should trigger invalid dim
Disp "error like with real-lists
Disp "With v5.1+ it is crashing:
Disp "[ON]=abort [ENTER]=crash…
Pause
Disp "L₁=",L₁

Et voilà, maintenant c'est le reset avec la perte totale de données, alors que nous n'avons utilisé que des instructions officielles documentées. :mj:

Bien évidemment, il n'y a aucun intérêt à vouloir utiliser une liste vide dans un programme.
Mais dans un gros programme utilisant des listes complexes, il n'est pas impossible qu'un bug puisse conduire à ce cas.
Et même si le programme travaille juste sur des listes réelles, elles pourront très bien être complexes si elles ne sont pas correctement réinitialisées en début de programme...

Bref, si tu as réussi à obtenir des plantages sans aller chercher de programmes assembleur, c'est hélas normal depuis la versions 5.1.0. :(
La solution serait de revenir à une version 5.0.0, mais si ta calculatrice est venue avec un Boot Code 5.1.5 cela t'est interdit - bienvenue chez TI... :#roll#:

Re: Pourquoi l'anti-downgrade des TI-83 Premium CE est néfas

Unread postPosted: 02 Apr 2017, 16:24
by Hayleia
Ce boot code est donc spécifique à la calculatrice ? Il n'est pas mis à jour lors d'une mise à jour de l'OS ?
edit
"Si cette version est supérieure à celle de la calculatrice, elle est alors enregistrée dans la mémoire Flash permanente, dans une zone qu'aucun menu officiel ne permet de réinitialiser."

Re: Pourquoi l'anti-downgrade des TI-83 Premium CE est néfas

Unread postPosted: 02 Apr 2017, 16:43
by critor
Le Boot Code n'est pas mis à jour non.
D'une part les fichiers d'OS ne le contiennent pas, et d'autre part il est programmé au début de la mémoire Flash, sur des secteurs protégés contre la réécriture.

Le numéro de version minimale autorisée lui, est inscrit en Flash dans la zone des TI-Certificats.

Re: Pourquoi l'anti-downgrade des TI-83 Premium CE est néfas

Unread postPosted: 03 Apr 2017, 16:25
by parrotgeek1
I wonder if you could make a parser hook which detects empty complex lists before the bug happens and calls the ERR: screen itself. I know how to do that on z80 but not ez80.

Re: Pourquoi l'anti-downgrade des TI-83 Premium CE est néfas

Unread postPosted: 03 Apr 2017, 19:26
by PT_
Nah, I've already discovered (and 'fixed') the bug, rather than doing complex stuff with hooks ;)

"I've fixed that dimension error bug! With OS 5.2.2.0043, at address $087561 (sorry, there is no label near it), there is a "dec hl \ ld a, h \ or a, l \ jr nz, $-E0", however, HL starts with 0 the first time it loops, so it first sets HL to $FFFFFF, and thus this routine will loop $FFFF times. Placing the "dec hl" after the "ld a, h \ ld a, l" would fix it :)"

Re: Pourquoi l'anti-downgrade des TI-83 Premium CE est néfas

Unread postPosted: 03 Apr 2017, 19:39
by parrotgeek1
PT_ wrote:Nah, I've already discovered (and 'fixed') the bug, rather than doing complex stuff with hooks ;)

"I've fixed that dimension error bug! With OS 5.2.2.0043, at address $087561 (sorry, there is no label near it), there is a "dec hl \ ld a, h \ or a, l \ jr nz, $-E0", however, HL starts with 0 the first time it loops, so it first sets HL to $FFFFFF, and thus this routine will loop $FFFF times. Placing the "dec hl" after the "ld a, h \ ld a, l" would fix it :)"

The problem is no one has publicly posted how to use a modified OS

Re: Pourquoi l'anti-downgrade des TI-83 Premium CE est néfas

Unread postPosted: 03 Apr 2017, 20:12
by critor
PT_ wrote:Nah, I've already discovered (and 'fixed') the bug, rather than doing complex stuff with hooks ;)

"I've fixed that dimension error bug! With OS 5.2.2.0043, at address $087561 (sorry, there is no label near it), there is a "dec hl \ ld a, h \ or a, l \ jr nz, $-E0", however, HL starts with 0 the first time it loops, so it first sets HL to $FFFFFF, and thus this routine will loop $FFFF times. Placing the "dec hl" after the "ld a, h \ ld a, l" would fix it :)"

Great, PT_.
I did report that bug last september, it was still unfixed in OS 5.2.2, and you just fixed it in less than a day ! :bj:

Unfortunately, there is no OS 5.2.2 for the TI-83 Premium CE - we're still with OS 5.2.1.

parrotgeek1 wrote:
PT_ wrote:Nah, I've already discovered (and 'fixed') the bug, rather than doing complex stuff with hooks ;)

"I've fixed that dimension error bug! With OS 5.2.2.0043, at address $087561 (sorry, there is no label near it), there is a "dec hl \ ld a, h \ or a, l \ jr nz, $-E0", however, HL starts with 0 the first time it loops, so it first sets HL to $FFFFFF, and thus this routine will loop $FFFF times. Placing the "dec hl" after the "ld a, h \ ld a, l" would fix it :)"

The problem is no one has publicly posted how to use a modified OS


Using it is not a problem, the signature is only checked at installation.

So we would just need an on-calc patching program. ;)
Can this be done, @PT_ ?

We just then won't be able to transfer the patched OS directly from the calculator to another one, since it won't validate.

Re: Pourquoi l'anti-downgrade des TI-83 Premium CE est néfas

Unread postPosted: 03 Apr 2017, 23:08
by PT_
Well, it's definitely doable to modify the OS, and if you REALLY want to, I'm MAYBE willing to write a program that swap these things what I said. My only problems are that I have not many free time, and I still shudder when thinking about modifying an OS, even though people say it's legal ;)

Re: Pourquoi l'anti-downgrade des TI-83 Premium CE est néfas

Unread postPosted: 03 Apr 2017, 23:50
by critor
Patching is legal, indeed.
Sharing patched images isn't.

That's the difference. ;)
And that's why I was asking about a patching program.

Even if you don't have many time, you might still be able to complete the patcher before TI fixes the bug. :P

Re: Pourquoi l'anti-downgrade des TI-83 Premium CE est néfas

Unread postPosted: 04 Apr 2017, 13:06
by PT_
Hehe, I've patched the OS and fixed it! :P

Image

(Hope I didn't break anything else)