comment transformer une MEMO7 en .CHG

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

Avatar de l’utilisateur
LeGrapyl
Messages : 1228
Inscription : 15 déc. 2013 23:38
Localisation : 34 mais parfois 71...

comment transformer une MEMO7 en .CHG

Message par LeGrapyl »

Pour faire suite à ces sujets, j'ouvre ce Topic afin de pouvoir convertir des fichiers Memo7 en .CHG afin de les transférer sur Disquette.
Alors pourquoi ?
A ce jour, on peut :
-convertir le contenu de Disquettes et Cassettes en fichiers, soit exploitables par un émulateur (DCMOTOpour ne citer que lui) soit les retranscrire sur leur support d'origine.
-exploiter le contenu dumpé des cartouches memo7 (ou mémo5) dans l'émulateur.
-réaliser une "copie de sauvegarde" du contenu d'une mémo7 grâce à 6502Man

Il semble à la lecture de ce sujet que les MEMO7 peuvent être enregistrées sur disquette au format .CHG. ainsi, si l'on a pas le matériel pour dumper le contenu des ROM sur la PCB que propose Phil, on peut toujours exploiter ces programmes sur le lecteur disquette d'un TO8D, d'un TO9.

Je reprends donc la proposition de Daniel :
Daniel a écrit :...Il faudrait écrire un tutoriel expliquant comment transformer une MEMO7 en .CHG, avec la formule de calcul de la checksum. Ou plus simplement mettre en ligne les fichiers .CHG de toutes les MEMO7 connues.

et propose de réunir ici les infos nécessaires à la conversion des images ROM en fichier .CHG et leur écriture sur disquette, et à terme transmettre le travail réalisé pour que Daniel puisse agrandir sa base d'images...

Ouvrez le ban :D
Tom la Riboulle, l'homme qui roule en boule !
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: comment transformer une MEMO7 en .CHG

Message par Daniel »

Un peu d'histoire :

- Avant l'invention d'internet, les thomsonistes de la première heure communiquaient avec des serveurs minitel sur TO8D, TO9+ et PC : Contacthoms, Serveur87, Club micro Thomson, etc. Ils ont déjà converti et diffusé la plupart des MEMO7 sous forme de fichier .chg
Il y en a une quarantaine ici : http://dcmoto.free.fr/tmp/recueil-chg.zip

- Ensuite, avec internet, ils ont créé des sites web, et continué à diffuser des fichiers .chg. Par exemple Serveur87 avait une disquette d'utilitaires en téléchargement.
utilitaires-chg-serveur87_to8fd.zip
(202.42 Kio) Téléchargé 208 fois
- Plus tard ils ont été découragés par le peu d'intérêt pour Thomson et ont abandonné leurs sites.
Exemple : http://a.contacthoms.free.fr/club.htm
Théoriquement, d'après les "mentions légales", il est interdit de donner le lien ci-dessus sans autorisation écrite du webmaster. Je n'ai pas son autorisation, mais je le connais bien et j'espère qu'il me pardonnera. J'ajoute qu'interdire de donner le lien vers son site est le meilleur moyen de le faire mourir.

Aujourd'hui le flambeau a été repris par les sites logicielsmoto et dcmoto. Le premier est un peu au point mort, par contre dcmoto est toujours actif et propose pas mal de fichiers .chg : pour chaque logiciel au format MEMO7, s'il y a aussi une disquette TO8 il y a fort à parier que c'est un fichier .chg. C'est le cas, en particulier, pour la version 2 de l'assembleur 6809. Cette version était officiellement distribuée, c'est pourquoi je l'ai mise en téléchargement. Les versions 1 et 2 n'y sont pas car elles ne sont pas officielles, mais elles existent (voir les deux premiers .chg du premier lien ci-dessus). Il est probable aussi que beaucoup de fichiers .chg soient chez logicielsmoto, car le webmaster était essentiellement utilisateur de TO8D.

Après ce préambule, voici comment on peut procéder :
1) Recenser tous les .chg existants. Il y a du tri à faire, car toutes les versions ne sont pas irréprochables, les anciens thomsonistes n'étaient pas tous informaticiens ni tous très rigoureux.
2) Lister les MEMO7 qui n'ont pas été converties en fichiers .chg
3) Les convertir. Je propose de le faire sur un cas précis en expliquant toutes les étapes en détail, pour servir de tutoriel.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
LeGrapyl
Messages : 1228
Inscription : 15 déc. 2013 23:38
Localisation : 34 mais parfois 71...

Re: comment transformer une MEMO7 en .CHG

Message par LeGrapyl »

J'ai fait le point sur les autres formats auxquels existent les images Memo7 en faisant un tri par support dans la liste des programmes disponibles sur DCMOTO. J'ai rajouté une colonne .CHG en essayant de trouver des correspondances entre le "recueil" et la liste sur DCMOTO.
Pièces jointes
MEMO2CHG.zip
Tableau images Memo7
(3.98 Kio) Téléchargé 205 fois
Tom la Riboulle, l'homme qui roule en boule !
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: comment transformer une MEMO7 en .CHG

Message par Daniel »

Pour dire la vérité, je ne suis pas très motivé pour diffuser des fichiers .chg sur le site dcmoto. Ce sont des bricolages de thomsonistes à la limite du piratage, sauf quelques exceptions : essentiellement les logiciels livrés avec les TO8, TO9 et TO9+ (Paragraphe, Communication, Multiplan, Fiches et Dossiers, 6809 Language Module, etc.).

Image . . . . . . . Image

Par contre, si vous me suggérez un titre de MEMO7, je peux faire un tutoriel pour expliquer comment la convertir.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
LeGrapyl
Messages : 1228
Inscription : 15 déc. 2013 23:38
Localisation : 34 mais parfois 71...

Re: comment transformer une MEMO7 en .CHG

Message par LeGrapyl »

Je comprends...du coup, autant les faire tous avec une méthode similaire non ? Aurais tu la gentillesse de faire un tuto sur Agenda ? (comme c'est le premier de la liste... :wink: )
Tom la Riboulle, l'homme qui roule en boule !
Avatar de l’utilisateur
petitjd
Messages : 2007
Inscription : 23 oct. 2007 11:50

Re: comment transformer une MEMO7 en .CHG

Message par petitjd »

Choplifter est nettement plus fun 8)
PetitJD
Tortue Jeulin: www.tortue-jeulin.com
Nanoreseau: www.nanoreseau.net
Proteus III: www.proteus-international.fr
Avatar de l’utilisateur
LeGrapyl
Messages : 1228
Inscription : 15 déc. 2013 23:38
Localisation : 34 mais parfois 71...

Re: comment transformer une MEMO7 en .CHG

Message par LeGrapyl »

Justement, autant ne pas me détourner de cette nouvelle tâche en testant un logiciel trop fun :D
Tom la Riboulle, l'homme qui roule en boule !
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: comment transformer une MEMO7 en .CHG

Message par Daniel »

Je prépare le tuto pour Agenda. Ensuite, pour le valider, petitjd l'appliquera à Choplifter :wink:
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: comment transformer une MEMO7 en .CHG

Message par Daniel »

DEBUT DU TUTORIEL - DEBUT DU TUTORIEL - DEBUT DU TUTORIEL - DEBUT DU TUTORIEL

Transformer la MEMO7 Agenda en fichier .CHG

1) Préparation des outils


- L'émulateur dcmoto ( http://dcmoto.free.fr/emulateur/index.html )
- L'utilitaire dcfdutil ( http://dcmoto.free.fr/emulateur/index.html )
- Un éditeur hexadécimal (exemple WinHex : https://www.x-ways.net/winhex/index-f.html )
- Une calculatrice hexadécimale (exemple : Calculatrice de Windows, Affichage : Programmeur, sélectionner Hex)
- L'image de la ROM de la cartouche agenda_memo7.rom : http://dcmoto.free.fr/programmes/agenda/index.html

Initialisations :
- Dans le dossier de dcmoto, créer un sous-dossier Agenda.
- Dans Agenda copier le programme dcfdutil.exe
- Dans Agenda créer un sous-dossier chg
- Dans le sous-dossier chg, copier agenda_memo7.rom
- Renommer le fichier en AGENDA.CHG

La ROM de la MEMO7 AGENDA a une taille de 8K. L'espace cartouche Thomson a une taille de 16K, et "voit" en réalité deux fois le contenu de la ROM. Ceci est reflété dans le fichier agenda_memo7.rom, qui contient deux parties identiques à la suite.

La deuxième partie identique à la première est inutile, nous la supprimons avec l'éditeur hexadécimal dans AGENDA.CHG et enregistrons le fichier, dont la taille passe de 16K à 8K.
agenda_01.png
agenda_01.png (4.08 Kio) Consulté 7120 fois
Dernière modification par Daniel le 11 avr. 2016 18:35, modifié 1 fois.
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: comment transformer une MEMO7 en .CHG

Message par Daniel »

Transformer la MEMO7 Agenda en fichier .CHG

2) Modification de la structure


Un fichier .CHG se reconnait à la signature $A55A dans les octets $20-$21.
Dans une MEMO7, ces deux octets contiennent en général du code exécutable, que nous allons déplacer pour libérer la place. C'est sans doute la partie la plus difficile de la transformation.

Observons le début du fichier :
agenda_02.png
agenda_02.png (20.88 Kio) Consulté 7107 fois
En $0020 se trouve le code suivant :

Code : Tout sélectionner

0020 8661       LDA    #$61               
0022 1F8B       TFR    A,DP               
0024 8601       LDA    #$01               
0026 9708       STA    /$08               
En $001E il y a $0020 : c'est l'adresse de démarrage de la MEMO7. Donc le code en $0020 est le tout début des initialisations.
Nous voyons aussi en $0010 une zone inutilisée à zéro binaire. La ruse consiste à déplacer la première instruction en $0010 et à lancer l'exécution à cette adresse.

- En $0010 on inscrit 8661200E, soit LDA #$61 suivi de BRA $0022
- En $001E on inscrit 0010, l'adresse de démarrage

Ce qui donne :
agenda_03.png
agenda_03.png (21.13 Kio) Consulté 7107 fois
Après cette modification, les octets $0020 et $0021 ne sont plus utilisés, nous pourrons donc les modifier... (à suivre)
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: comment transformer une MEMO7 en .CHG

Message par Daniel »

En lisant ce tutoriel, petitjd va immédiatement me dire d'aller voir ici : http://forum.system-cfg.com/viewtopic.php?f=25&t=6899
Il a entièrement raison : en modifiant les octets $0010-$0013 on provoque une erreur de checksum en $001A.

Rappelons que cette checksum est la somme des $19 premiers octets à laquelle on ajoute $55. Nous la recalculons avec la calculatrice hexadécimale (ou mentalement pour les plus entraînés), et nous trouvons $5D.

Il ne reste plus qu'à inscrire $5D en $001A (la checksum) et $A55A en $0020 (la fameuse signature des fichiers CHG), et nous obtenons un fichier CHG valide :
agenda_04.png
agenda_04.png (20.2 Kio) Consulté 7104 fois
(à suivre)
Dernière modification par Daniel le 12 avr. 2016 08:11, modifié 1 fois.
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: comment transformer une MEMO7 en .CHG

Message par Daniel »

Transformer la MEMO7 Agenda en fichier .CHG

3) Création de la disquette


Avec dcmoto en mode TO8D (par exemple), aller dans "Supports amovibles" pour charger une disquette. Sélectionnez le dossier Agenda et tapez le nom de la disquette à créer : agenda.fd, ou agenda_to8.fd ou ce que vous voulez. Répondre OUI à la question pour autoriser la création. Dans la fenêtre Supports amovibles, cochez la case autorisant l'écriture dans la disquette.
agenda_05.png
agenda_05.png (53.45 Kio) Consulté 7095 fois
Ensuite, en Basic 512, formatez la face 0 de la disquette avec la commande DSKINI0
Fermez dcmoto.

Dans le dossier Agenda lancez dcfdutil et sélectionnez la disquette agenda.fd
Sélectionnez la fonction Importer et cliquez sur Exécuter la fonction.
Choisissez le sous-dossier chg contenant le fichier AGENDA.CHG
Le fichier est importé dans la disquette. Quittez dcfdutil.
agenda_06.png
agenda_06.png (13.59 Kio) Consulté 7095 fois
(à suivre)
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: comment transformer une MEMO7 en .CHG

Message par Daniel »

Avec l'éditeur hexadécimal ouvrez l'image de disquette agenda.fd (ou agenda_to8.fd si vous l'avez nommée ainsi).
Le répertoire de la disquette commence au troisième secteur de la piste 20. Pour une disquette Thomson 3"1/2 c'est à l'adresse hexadécimale $00014200. Dans ce répertoire recherchez l'entrée correspondant au fichier CHG. Dans notre exemple il n'y a que ce fichier dans la disquette, il est donc en première position.
agenda_07.png
agenda_07.png (22.85 Kio) Consulté 7090 fois
Pour un fichier CHG, il faut initialiser les octets 30 et 31 (les deux derniers) de l'entrée de répertoire.

- L'octet 30 contient le nombre de banques utilisées par la cartouche. Dans notre cas, la cartouche a une taille de 8K et n'occupe donc qu'une banque de 16K. Nous mettons la valeur $01 dans l'octet 30.

- L'octet 31 contient la checksum des 8 premiers octets de l'entrée de répertoire. Un peu de calcul mental (les paresseux peuvent utiliser la calculatrice) et on trouve $E0, que l'on met dans l'octet 31.

On enregistre le fichier et notre disquette Agenda est prête. Reste à la tester pour vérifier qu'il n'y a pas eu d'erreur commise.

Dans dcmoto en mode TO8D utilisez la fonction E du menu d'accueil.
agenda_08.png
agenda_08.png (18.54 Kio) Consulté 7090 fois
L'application AGENDA apparaît dans la fenêtre de gauche.
Cliquez sur AGENDA, l'application se charge en mémoire et apparaît dans la fenêtre de droite.
Cliquez sur AGENDA dans la fenêtre de droite, l'application démarre.
agenda_09.png
agenda_09.png (14.93 Kio) Consulté 7089 fois
FIN DU TUTORIEL - FIN DU TUTORIEL - FIN DU TUTORIEL - FIN DU TUTORIEL

On passe aux questions :wink:
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
LeGrapyl
Messages : 1228
Inscription : 15 déc. 2013 23:38
Localisation : 34 mais parfois 71...

Re: comment transformer une MEMO7 en .CHG

Message par LeGrapyl »

Beau travail Daniel ! :D
Bon, ce week-end je tente le coup. Donc je te laisse un peu de répit avant les questions :mrgreen:
Tom la Riboulle, l'homme qui roule en boule !
Avatar de l’utilisateur
petitjd
Messages : 2007
Inscription : 23 oct. 2007 11:50

Re: comment transformer une MEMO7 en .CHG

Message par petitjd »

J'ai essayé de mon côté pour Choplifter, mais je bute à un endroit:
le code en $20-$21 est: $FC63 (ca correspond à un LDD $63 ???)
le code en $1E-$1F est: $18DE

donc ici, rien ne devrait changer pour le calcul de la cheksum du nom de la cartouche suite à la modification du contenu de $20-$21 en $A55A puisque le point d'entrée est en dehors de la zone concernée (mais il faudra surement recalculer malgré tout la checksum car $FC63 devra être relogé ailleurs, là où il y a des 00 dans la zone de calcul de la checksum), mais ce qui me pose soucis comme je ne parle pas l'assembleur, c'est de savoir où se situe l'appel au code situé en $20-$21 pour dire à cet appel d'aller voir non plus en $20-$21 mais là où j'aurais déplacé $FC63.

Après pour les autres étapes, ca ne semble pas poser de problème, pour la dernière modification dans le catalogue de la disquette non plus, j'ai mis 01 en $1421E et j'ai calculé la cheksum $1421F en additionnant les 8 premières valeurs du catalogue avec la calculatrice windows en mode programmeur, hex sélectionné ainsi que octet.

Il y a un détail, pour la modification du catalogue du fichier .fd, WinHex ne permet pas de le faire en version gratuite, le fichier faisant plus de 200ko. J'ai utilisé un éditeur gratuit pour cela.
PetitJD
Tortue Jeulin: www.tortue-jeulin.com
Nanoreseau: www.nanoreseau.net
Proteus III: www.proteus-international.fr
Répondre