• 1/ Préparation du code source

Dans l'assembleur de WinAPE, j'utilise la directive ORG suivie de l'adresse à laquelle je souhaite loger mon programme. Ensuite, j'ajoute un point d'arrêt sur la première instruction. Pour une raison que j'ignore, le fait d'assembler mon programme ne suffit pas à le placer dans la mémoire du CPC. Il faut exécuter le programme d'abord. Je mets donc un point d'arrêt sur la première instruction pour éviter de tout dérouler (c'est pas demain la veille que je ferai du code auto-modifiable sur CPC, mais on sait jamais).

01_assemblage.png

  • 2/ Assemblage

Maintenant je peux assembler le bousin. Je note l'adresse de départ quelque part ($0170) et l'octet contenu à cette adresse ($F3). Ca me permet juste de vérifier que le programme est bien présent dans la RAM du CPC.

02_adresse_depart.png

  • 3/ Adresse de fin

Ensuite, un rapide coup d'oeil à la fin du code assemblé pour noter l'adresse de fin et son contenu. Ici, c'est $A66F et on y trouve la valeur $6F. Les amateurs du CPC noteront que le programme donné en exemple occupe pratiquement les 42 Ko de la zone utilisateur du CPC (elle se termine à l'adresse $A679).

03_adresse_fin.png

  • 4/ Exécution

Voilà, maintenant je peux lancer le programme avec un modeste "call &170". WinAPE reprend tout de suite la main puisqu'il y a un point d'arrêt sur la première instruction. Dans le debugger, je me rends à l'adresse $0170, je vérifie qu'elle contient l'octet $F3.

04_execution_breakpoint.png

  • 5/ Sauvegarde de la RAM

Je sélectionne la zone de la RAM à sauver, donc depuis l'adresse $0170 jusqu'à $A66F. Comme convenu, je trouve bien $6F à l'adresse de fin. Tranquille Emile, il ne me reste plus qu'à faire un clic droit -> Save. Je lui choisis un joli nom (ym.bin) avant de l'insérer dans une image disque.

05_sauver_ram.png

  • 6/ Importation du binaire

Puisque j'ai un SDiskEmul à la place du lecteur de disquettes sur mon 6128, je dois créer une image disque et copier mon programme dedans. Pour cela, j'ai choisi ManageDsk (dispo ici : http://amstrad.cpc.free.fr/download.php?op=geninfo&did=8), un utilitaire bien sympatoche pour gérer ses images disques. Lors de l'import, je précise qu'il s'agit d'un fichier binaire et que l'adresse de début est 0x0170. N'étant pas spécialiste des exécutables Amstrad, je renseigne le point d'entrée avec la même valeur que précédemment.

06_import_bin_dans_dsk.png

  • 7/ Enregistrement de l'image disque

L'image disque est prête, je la sauve au format DSK. Relax Max, c'est bientôt prêt.

07_sauvegarde_dsk.png

  • 8/ Test sous émulateur

Avant d'aller copier le DSK obtenu sur la SDCard du SDiskEmul, je fais un test rapide avec WinAPE.

08_cat_run.png

En général tout se passe bien... ça roule Raoul !