π
<-
Chat plein-écran
[^]

Récupérer un programme perdu par un RAM Cleared

Regroupement de tous les tutoriaux z80 (82/83/84)

Récupérer un programme perdu par un RAM Cleared

Unread postby mdr1 » 19 May 2013, 18:27

Bonjour à tous !

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

wabbitemu.gif
wabbitemu.gif (1001 Bytes) Viewed 19285 times


Puis je désarchive le programme, pour l'utiliser ou le continuer par exemple :

wabbitemu07.gif
wabbitemu07.gif (986 Bytes) Viewed 19285 times


Et malencontreusement, en jouant avec je ne sais quel jeu, en faisant joujou avec l'hexa ou autre chose :

wabbitemu08.gif
wabbitemu08.gif (1023 Bytes) Viewed 19285 times


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 :

wabbitemu09.gif
wabbitemu09.gif (832 Bytes) Viewed 19285 times


Lancez donc l'application Calcsys, puis appuyez sur la touche [5] pour aller dans la console :

wabbitemu11.gif
Console de Calcsys
wabbitemu11.gif (730 Bytes) Viewed 19285 times


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 :

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


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 :

wabbitemu13.gif
Résultat de la recherche.
wabbitemu13.gif (1.47 KiB) Viewed 19285 times


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.

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 :

CalcsysHexa.png
CalcsysHexa.png (3.19 KiB) Viewed 19285 times


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 :

wabbitemu14.gif
Nouveau programme.
wabbitemu14.gif (886 Bytes) Viewed 19285 times


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 :

wabbitemu15.gif
Prog/List VAT.
wabbitemu15.gif (1.42 KiB) Viewed 19285 times


Appuyez donc sur la touche numérique se situant devant le programme. Moi, j'appuie sur [4] :

wabbitemu17.gif
Infos Prog Worms
wabbitemu17.gif (1.45 KiB) Viewed 19285 times


É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.

wabbitemu18.gif
Éditeur hexadécimal VAT Loc
wabbitemu18.gif (1.8 KiB) Viewed 19285 times


Cliquez autant de fois que nécessaire sur la touche :f45: pour quitter Calcsys, puis allez dans PRGM :

wabbitemu19.gif
Le miracle
wabbitemu19.gif (1001 Bytes) Viewed 19285 times


Ouiiii !!! Les heures de travail ont été récupérées ! Merci qui ? :D
(En somme, c'est moi qui viens de perdre plusieurs heures à votre place :p )

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 !
Last edited by mdr1 on 20 May 2013, 12:10, edited 3 times in total.
Image ImageImage
User avatar
mdr1Premium
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 19.7%
 
Posts: 1083
Images: 12
Joined: 28 Mar 2011, 00:00
Gender: Not specified
Calculator(s):
Class: Je voyage toujours en première.

Re: Récupérer un programme perdu par un RAM Cleared

Unread postby Adriweb » 19 May 2013, 18:46

Excellent tuto :)
User avatar
AdriwebAdmin.
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 52%
 
Posts: 12683
Images: 1081
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
Class: (ingénieur)
Twitter: adriweb
GitHub: adriweb

Re: Récupérer un programme perdu par un RAM Cleared

Unread postby Xeda E. » 19 May 2013, 22:15

Cool o.o Il y a un programme qui s'appelle Archive Undeleter. Je pense que ce programme utilise le même technique. ^-^
Très bien, les images étaient une bonne idée!

[english]
That's really cool o.o There is a program called Archive Undeleter (par Dr. Dnar) that uses the same technique, I think. The screen shots were a great idea!
Je suis désolé pour ma grammaire ^^ Je suis une américaine >.>
User avatar
Xeda E.
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Level up: 40.6%
 
Posts: 16
Joined: 03 Sep 2011, 05:19
Gender: Not specified
Calculator(s):

Re: Récupérer un programme perdu par un RAM Cleared

Unread postby mdr1 » 19 May 2013, 22:59

Xeda E. wrote:Cool o.o Il y a un programme qui s'appelle Archive Undeleter. Je pense que ce programme utilise le même technique. ^-^
Très bien, les images étaient une bonne idée!

Je ne connaissais pas ce programme, il a l'air très bien. :) Cela dit, ma technique reprend directement ce qui est en ROM et donc est plus propre ; il n'y a rien besoin d'archiver à nouveau, tandis que ce programme copie tout vers la RAM. Il faut ensuite archiver pour libérer de la RAM et récupérer les autres programmes, et si le GarbageCollect est obligatoire, c'est impossible car ça vire tout le reste. De plus, comme c'est un programme assembleur, si on le désarchive pour l'exécuter et qu'on se prend un GarbageCollect, c'est pareil. Mais c'est vrai qu'il y a les shells... mais ça ne résout pas le problème de copie vers la RAM.

Et puis surtout, ma technique est nettement plus classe ! B-)
Image ImageImage
User avatar
mdr1Premium
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 19.7%
 
Posts: 1083
Images: 12
Joined: 28 Mar 2011, 00:00
Gender: Not specified
Calculator(s):
Class: Je voyage toujours en première.

Re: Récupérer un programme perdu par un RAM Cleared

Unread postby Persalteas » 20 May 2013, 08:44

Superbe technique !
ça risque de me motiver à mettre Calcsys sur ma TI :P
Il est compatible MathPrint, au moins ?
User avatar
Persalteas
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 94.6%
 
Posts: 2335
Images: 113
Joined: 04 Feb 2010, 00:00
Location: Evry (France)
Gender: Male
Calculator(s):
Class: PhD candidate, Bioinformatics

Re: Récupérer un programme perdu par un RAM Cleared

Unread postby nikitouzz » 20 May 2013, 09:17

Calcsys est compatible MP oui ^^ il est même a posseder sur sa calculette !
Mes records personnels :
2x2x2 : 2.18 secondes / 2x2x2 une main : 21.15 secondes / 2x2x2 yeux bandés : 47.59
3x3x3 : 5.97 secondes / 3x3x3 une main : 49.86 secondes
4x4x4 : 1.49 minutes / 4x4x4 une main : 6.50 minutes
5x5x5 : 4.10 minutes / 5x5x5 une main : 18.02 minutes
6x6x6 : 8.10 minutes
7x7x7 : 16.03 minutes
9x9x9 : 58.26 minutes

megaminx : 5.59 minutes / pyraminx : 7.91 secondes / square-one : 1.07 minutes

Image
User avatar
nikitouzzModo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 1.9%
 
Posts: 1014
Images: 1
Joined: 16 Feb 2012, 18:39
Gender: Male
Calculator(s):
Class: Fac de maths

Re: Récupérer un programme perdu par un RAM Cleared

Unread postby AlexisVieira » 29 May 2013, 01:25

what's the difference between this method and this: http://clrhome.org/tutorials/crash/05/ ??

I tried that on the website and it worked fine... i don't tried this one on the post because i can't understand some words on french...
I'm Portuguese, sorry about bad English :s
User avatar
AlexisVieira
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 25.7%
 
Posts: 213
Images: 13
Joined: 05 Feb 2013, 16:58
Location: Portugal
Gender: Male
Calculator(s):
Class: 12ºAno PT

Re: Récupérer un programme perdu par un RAM Cleared

Unread postby mdr1 » 07 Jun 2013, 17:13

AlexisVieira wrote:what's the difference between this method and this: http://clrhome.org/tutorials/crash/05/ ??

Thus, the technic already existed? Ok, I can see a difference: in my method, there's a stronger verification to be sure the location is the destroyed program one's.

AlexisVieira wrote:I tried that on the website and it worked fine... i don't tried this one on the post because i can't understand some words on french...

What don't you understand?
Image ImageImage
User avatar
mdr1Premium
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 19.7%
 
Posts: 1083
Images: 12
Joined: 28 Mar 2011, 00:00
Gender: Not specified
Calculator(s):
Class: Je voyage toujours en première.

Re: Récupérer un programme perdu par un RAM Cleared

Unread postby Ti64CLi++ » 09 Jan 2015, 12:07

Très bon tuto.
Il m'a beaucoup aide.
Merci Mdr1
Image
User avatar
Ti64CLi++Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 76.6%
 
Posts: 3166
Images: 61
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
Class: Maths Sup
GitHub: Ti64CLi

Re: Récupérer un programme perdu par un RAM Cleared

Unread postby Ti64CLi++ » 14 Oct 2015, 13:48

J'avais perdu un programme nommé ION (non, ce n'est pas le shell :D), mais aucune des adresses qu'il m'a donné n'a marché :?
(J'avais mis plusieurs mois a le confectionner, l’améliorer, le corriger, et le compiler (c'était un programme en Axe Parser ;)) :'()
Image
User avatar
Ti64CLi++Modo
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 76.6%
 
Posts: 3166
Images: 61
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
Class: Maths Sup
GitHub: Ti64CLi

Next

Return to Tutoriaux

Who is online

Users browsing this forum: No registered users and 1 guest

-
Search
-
Featured topics
Omega, le fork étendant les capacités de ta NumWorks, même en mode examen !
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Concours TI-Planet-Casio de rentrée 2019. 3 défis pour plus d'une 15aine de calculatrices graphiques et nombre de goodies sortant de l'ordinaire ! :D
123
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...

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 
-
Stats.
465 utilisateurs:
>418 invités
>41 membres
>6 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)