Note : Ce tutoriel est destiné à n'importe qui : aucune connaissance particulière sur la calculatrice n'est demandée. Je ne suis pas responsable des éventuels problèmes qui pourraient vous survenir, même si je ne vois pas de raison pour laquelle il pourrait y avoir un problème : normalement, tout au plus un RAM Cleared.
Avant de crier de joie si vous venez de perdre un programme, il faut que vous soyez dans les conditions suivantes :
- Votre programme a déjà été archivé avant que vous ne le mettiez en RAM avant d'avoir un RAM Cleared, et il n'y a pas eu de Garbage Collect depuis.
- Calcsys est sur votre calculatrice (s'il n'y est pas déjà, le transfert peut écraser le programme).
Ceci m'est déjà arrivé (il y a longtemps), et je me suis dis que ça pourrait être utile de vous indiquer comment procéder ! Je vais donc vous faire l'exemple d'un programme se nommant WORMS de ma création (de manière historique, cette technique m'a permis de récupérer ce programme !) :
Puis je désarchive le programme, pour l'utiliser ou le continuer par exemple :
Et malencontreusement, en jouant avec je ne sais quel jeu, en faisant joujou avec l'hexa ou autre chose :
Horreur ! Je viens de perdre des dizaines d'heures de code !! Alors je cherche à tout hasard sur internet, et je tombe sur ce tutoriel de mdr1, et en plus, je suis intelligent : je possède l'excellente application Calcsys. Alors je veux tenter ma chance.
Pourquoi pouvez-vous à priori récupérer votre programme ? Il faut savoir que lorsque vous désarchivez un programme, certes, il est copié dans la RAM, mais son contenu n'est pas supprimé de la ROM. Seule la référence qui indique où il se situe dans la ROM est supprimée. Notre but va donc être de retrouver cette adresse.
Pourquoi transférer Calcsys si je ne l'ai pas peut poser problème ? Son transfert peut écraser le contenu en ROM, mais vous pouvez quand même essayer, Calcsys pourrait être stocké ailleurs.
Au passage, le programme a bien disparu :
Lancez donc l'application Calcsys, puis appuyez sur la touche [5] pour aller dans la console :
J'espère que vous vous souvenez du nom de votre programme, parce que sinon, on ne va pas aller bien loin ! J'espère également que le nom est assez long et surtout qu'il n'a pas le mauvais goût d'être répété dans d'autres programmes !
Il va falloir convertir le nom de votre programme en hexadécimal. Si vous ne savez pas ce que c'est, et que vous ne connaissez pas la correspondance entre un caractère ASCII et son code hexadécimal, ce n'est pas grave, vous n'avez pas besoin de connaitre l'hexadécimal. Voici une table de correspondances :
Show/Hide spoilerAfficher/Masquer le spoiler
A = 41
B = 42
C = 43
D = 44
E = 45
F = 46
G = 47
H = 48
I = 49
J = 4A
K = 4B
L = 4C
M = 4D
N = 4E
O = 4F
P = 50
Q = 51
R = 52
S = 53
T = 54
U = 55
V = 56
W = 57
X = 58
Y = 59
Z = 5A
thêta = 5B
0 -> 30
1 -> 31
2 -> 32
3 -> 33
4 -> 34
5 -> 35
6 -> 36
7 -> 37
8 -> 38
9 -> 39
B = 42
C = 43
D = 44
E = 45
F = 46
G = 47
H = 48
I = 49
J = 4A
K = 4B
L = 4C
M = 4D
N = 4E
O = 4F
P = 50
Q = 51
R = 52
S = 53
T = 54
U = 55
V = 56
W = 57
X = 58
Y = 59
Z = 5A
thêta = 5B
0 -> 30
1 -> 31
2 -> 32
3 -> 33
4 -> 34
5 -> 35
6 -> 36
7 -> 37
8 -> 38
9 -> 39
Dans l'exemple de mon programme Worms, ça donne : 574F524D53. Pour chercher cette suite d'octets notés hexadécimalement, il faut taper dans la console : "SEARCH 574F524D53" puis ENTER. Les résultats de la recherche apparaissent à l'écran au fur et à mesure que vous pressez ENTER. Si cela met du temps, c'est tout à fait normal. Moi, j'ai obtenu :
Aïe, c'est là que les choses vont se corser. Il y a plusieurs résultats, lequel prendre ? Dans le cas ci-dessus, le premier résultat correspond bien au nom du programme, tandis que le suivant correspond à un affichage de texte dans le programme. En effet, le premier nombre 400B ou 409C désigne l'adresse hexadécimale du programme, et le suivant, 08, désigne la page où est stocké le programme. Vous n'y comprenez rien à ce charabia ? Ce n'est pas grave du tout, je dis ces choses incompréhensibles pour ceux qui veulent en savoir plus ! S'il y a également des résultats avec une page 00, ne le prenez pas en compte.
Show/Hide spoilerAfficher/Masquer le spoiler
Note technique : il ne faut pas le prendre en compte puisque la page 00 désigne la mémoire RAM, et nous, notre programme à récupérer n'est pas dans la RAM mais dans la ROM.
Notez les résultats susceptibles de vous intéresser sur un morceau de papier, puis quittez la console en tapant la commande "QUIT" ou "Q". Ensuite, allez dans l'éditeur hexadécimal avec [1]. Choisissez un des résultats que vous avez notés : nous allons vérifier s'il s'agit du bon. Pressez [ALPHA][tan] pour la lettre "G" et tapez le code hexadécimal (le premier nombre, dans mon cas, 400B) que vous choisissez. Puis appuyez sur [APLHA][*] pour la lettre "R" et tapez la page (second nombre, dans mon cas, 08). Le nom du programme est censé apparaitre.
Enfin, appuyez deux fois sur la touche haut, et deux fois sur la touche gauche. J'obtiens ceci :
Dans l'ordre, les vérifications à faire sont :
- Le nombre en jaune est bien 00 00
- Le nombre en rose est bien 05 (Programme) ou 06 (Programme protégé)
- Le nombre en bleu, ici, 01 40, correspond bien à l'inversé de celui tout en haut à gauche de l'écran, ici, 40 01
- Le nombre en blanc correspond bien au numéro de la page que vous avez entré
- Le numéro en vert correspond bien au nombre de caractères qui constitue le nom du programme (pour moi : WORMS)
Une vérification supplémentaire est possible, mais plus compliquée : si vous connaissez la taille du programme, celle qui s'affiche dans le menu Mem lorsque le programme est sur la calculatrice, vous pouvez vérifier qu'elle correspond bien au nombre hexadécimal inversé en rouge (note : la table des correspondances n'a rien à voir là dedans).
Si une des vérifications échoue, vous pouvez rayer la possibilité de la liste et réessayer pour le reste. Sinon, les chances sont environ de 100% qu'il s'agisse de la bonne adresse. NB : il est possible que plusieurs adresses fonctionnent, car votre programme aurait été archivé plusieurs fois, et il y aurait donc plusieurs fois votre programme restant en archive. Prenez alors la dernière adresse si vous voulez la version la plus récente.
Écrivez donc sur un papier le nombre tout en haut à gauche de l'écran, ici : 4001. Pour ne pas s'emmêler, appelons ce nombre "carabistouille".
Sortez de Calcsys avec [2nd][MODE], et créez un nouveau programme du nom de celui que vous voulez récupérer. Pour moi :
Quittez le programme, retournez sur Calcsys et allez dans Prog/List VAT en appuyant sur [6][1][1]. Puis appuyez sur [6] jusqu'à ce que vous voyiez le nom du programme apparaitre sur l'écran :
Appuyez donc sur la touche numérique se situant devant le programme. Moi, j'appuie sur [4] :
Écrivez le nombre à droite de VAT Loc sur un papier (ici FCF1), puis appuyez [ALPHA][^] (lettre H) pour accéder à l'éditeur hexadécimal. Appuyez sur [ALPHA][tan] (lettre G) puis tapez l'adresse que vous venez d'écrire. Cliquez sur la touche du haut.
Retrouvez sur votre papier le nombre carabistouille : dans mon cas, il s'agit de 40 01. Appuyez sur ENTER et tapez les deux premiers chiffres, ici 40. Appuyez sur droite, ENTER, puis entrez les deux derniers chiffres, ici, 01. Appuyez deux fois sur la touche de gauche puis sur ENTER, et enfin, entrez le numéro de la page, ici, 08.
Cliquez autant de fois que nécessaire sur la touche pour quitter Calcsys, puis allez dans PRGM :
Ouiiii !!! Les heures de travail ont été récupérées ! Merci qui ?
(En somme, c'est moi qui viens de perdre plusieurs heures à votre place )
PS : n'hésitez pas à me poser une question si vous bloquez à un point, histoire que je n'aie pas perdu toutes ces heures pour rien !