Vous vous souvenez que j'ai déniché des TI-82 avec une version ROM 10.0 et 11.0 ?
(la 11.0 était même inconnue sur la planète...)
Sur ces TI-82, les shells disponibles ne fonctionnent pas (ils ont tous été testés à partir de la ROM 16.0) - en gros ils provoquent tous après l'installation un plantage quasi-immédiat, à la moindre tentative d'utilisation de l'assembleur.
Donc aucun programme assembleur ne peut être lancé, et cela exclut également les programmes de dumping (pour obtenir une image de la ROM).
Or le dumping est essentiel: l'image obtenue peut être utilisée sous émulateur, et peut être également comparée avec ses soeurs à des fins de portage (d'un shell, ou émulateur).
Donc au commencement de tout, il y a le dumping.
Ceux qui écrivent des émulateurs ou shells commencent tous par le dumping.
Mais pour le dumping, il faut l'assembleur, ai-je dit?
Ca se mort la queue...
Et bien non!
Le dumping est plus facile avec de l'assembleur, mais reste possible sans - et heureusement pour les auteurs d'émulateurs/shells.
Il y a toujours la solution d'arracher la puce ROM de la TI-82, et de la brancher sur un appareil de lecture... (ce ne sera jamais ma méthode - mais parfois, comme sur TI-nSpire, il n'y a pas le choix...)
Et suite à la lecture de plusieurs documents techniques concernant l'assembleur et les shells TI-82/TI-85, j'ai une ébauche de méthode qui va nous permettre de voir ce qu'il y a dans ces TI-82.
La technique suivante concerne les calculatrices Z80 munies d'un port I/O avec 32Ko de RAM, et une ROM d'au moins 32Ko (TI-76.fr, TI-82, TI-83, TI-82 Stats, TI-82 Stats.fr, TI-83, TI-85), .
Elle est sûrement adaptable à d'autres modèles.
Le processeur Z80 ne peut adresser que 64Ko de mémoire simultanément.
La RAM est mappée entre 8000 et FFFF (derniers 32Ko).
Il ne reste donc que 32Ko accessibles, alors que la ROM TI-82 fait 128Ko. Comment fait-elle?
Et bien, entre 0000 et 3FFF sont mappés les 16 premiers Ko de la ROM (ceux qui devraient contenir le instructions les plus fréquentes.
La ROM est découpée en 8 zones de 16Ko. Entre 4000 et 7FFF est mappée de façon variable une de ces zones. Lorsque nécessaire, on change de zone ROM - c'est le système du ROM paging.
Donc à tout moment, la TI-82 voit:
- les 16 premiers Ko de la ROM entre 0000 et 3FFF
- une des 8 zones de 16Ko de la ROM entre 4000 et 7FFF
- la RAM de 32Ko entre 8000 et FFFF
Et donc comment faire le dumping?
Il faut:
- créer l'image Pic1 par StorePic Pic1
- désactiver les axes graphiques
- transférer un backup sur l'ordinateur
- hacker le backup, en modifiant l'adresse mémoire de Pic1 (8000 et plus) pour la faire pointer en ROM (moins de 8000 - pour commencer 0000)
- corriger éventuellement la somme de contrôle du backup (ignorée par TiLp)
- renvoyer le backup sur la calculatrice
- rappeller le contenu de Pic1 par RclPic Pic1 - la calculatrice affiche alors une image qui est la visualisation binaire de 1024octets (1Ko) de la ROM
- sauvegarder l'image obtenue en RAM dans une autre variable StorePic Pic2
- Envoyer Pic2 sur l'ordi
- Recommencer au hacking du backup ci-dessus en ajoutant 1024 octets à l'adresse ROM.
La méthode fonctionne - je l'ai testée.
Le seul problème est que l'on récupère la ROM par bloc de 1Ko, et qu'il faudrait donc recommencer l'opération environ 128 fois.
Mais la méthode n'est pas encore complète.
Elle va permettre de récupérer sans problème les premiers 16Ko de la ROM (de 0000 à 3FFF).
Mais après, je ne sais pas encore ce qui se passe quand on atteint le zone variable (4000 à 7FFF) qui contient une zone variable de la ROM, gérée par ROM paging. Notamment, peut-on contrôler ce système, sans avoir besoin d'assembleur?...
Bon, pour le moment je vais dumper les premiers 16Ko des ROMs 10.0 et 11.0.
Après, on verra pour les 116Ko restants...