05-Découverte du code

Fichiers sources et découverte du code assembleur MSX

Pour faire fonctionner l’environnement que l’on a mis en place, on a besoin d’un document où taper notre code.
Il se présente sous la forme d’un petit fichier texte comme on peu en utiliser avec le blocnote de Windows. Sauf que le notre aura une extension de fichier qui se termine par .asm au lieu du traditionnel .txt

C’est lui que l’on va ouvrir avec l’éditeur de texte CONTEXT, c’est lui qui va recevoir le code que l’on va taper et c’est encore lui que l’on va compiler via la touche de fonction F9. Cette compilation nous donnera un fichier exploitable par l’émulateur MSX.

Ce fichier ne peut pas être compilé tout seul, il a besoin de se trouver dans le même dossier ou vont figurer 2 fichiers sources (appelées librairies) et qui aideront à la compilation.
En effet notre fichier principal comporte un entête et un pied de page que l’on ne touchera pas mais qui à l’aide des librairies feront qu’à la compilation on se retrouvera avec un fichier de sortie qui aura l’extension .ROM.
Et miracle, cela simulera les fameuses cartouches ROM de notre enfance qui démarraient automatiquement quand on allumait notre bon vieux MSX.

Ce fichier ne peut pas être compilé tout seul, il a besoin de se trouver dans le même dossier ou vont figurer 2 fichiers sources (appelées librairies) et qui aideront à la compilation. En effet notre fichier principal comporte un entête et un pied de page que l’on ne touchera pas mais qui à l’aide des librairies feront qu’à la compilation on se retrouvera avec un fichier de sortie qui aura l’extension.ROM. Et miracle, cela simulera les fameuses cartouches ROM de notre enfance qui démarraient automatiquement quand on allumait notre bon vieux MSX.

Bon on résume avec un schéma :
![Execution](/tuto asm 01/05/images/1.png?classes=shadow)

Bon, j’espère que c’est plus clair maintenant.
Avant que je ne vous donne le liens de téléchargement des fichiers sources, je vais vous les présenter:

Le fichier principal, celui où on tapera notre code (pour l’instant, il n’y a que l’entête et le pied de page à l’intérieur) :

example.asm

Les 2 librairies, qui doivent se trouver toujours dans le même dossier que le fichier principal sinon l’assembleur ne saura pas où les trouver :

MSXRom-Include.asm

MSXRom-Lib.asm 

Pour le lien du dossier : fichiers source à télécharger en bas de cette page.

Je me dois encore remercier celui qui a fourni ces sources, c’est son travail : http://www.electricadventures.net/

Vous ouvrez exemple.asm avec CONTEXT et on va en profiter pour utiliser le colorateur syntaxique qui reconnait le langage assembleur et que l’on a téléchargé précédemment.
Donc, dans le menu de CONTEXT, choisissez Tools / Set Highlighter et dansla liste des codes connus, vous devez trouver WLA-Z80 Assembler, sélectionnez-le.

Si vous voulez faire apparaître les numéros de ligne sous CONTEXT (utile pour le debuggage), dans le menu de CONTEXT, choisissez Options / Environment Options / onglet Editor et vous cochez Line numbers.
Vous devez en être là :

![Execution](/tuto asm 01/05/images/2.png?classes=shadow)

2 fenêtres:

  • La partie haute : zone où on tape le code.
  • La partie basse : zone de suivi de la compilation quand on fait F9.

Regardons ce code depuis le début :

C’est ce que j’appelle l’entête.

FNAME: c’est le nom du fichier qui sortira à la compilation, vous pouvez donc mettre le nom que vous voulez entre les " " du moment que vous conservez l’extension.ROM.

cpu Z80: La compilation utilisera la librairie Z80 (tniASM en gère plusieurs).

ORG 4000h: Notre programme s’implantera à cette adresse au démarrage de la ROM dans l’émulateur. Pour info, quand un nombre est suivi de ‘h’ c’est que l’on indique que c’est un Hexadécimal sinon, c’est un décimal.

INCLUDE: C’est pour cela que je vous disais que les librairies doivent être dans le même dossier, car à la compilation, tniASM va chercher tous les fichiers cité par in INCLUDE et qui va lui permettre d’interpréter le code spécifique à l’assembleur MSX.

DW INIT: Cette suite de DW permet de créer une structure de ROM à la compilation d’après ce que j’en ai compris. Ce qui est important, c’est le mot INIT, cela aurait pu être n’importe quoi FRAISE, MARTEAU,etc…
Cela intime l’ordre au démarrage de la ROM d’aller déclencher le code qui commence par ce ‘label’. Ces ‘labels’ sont des bout de programmes appelés routines qui que l’on pourra appeler au besoin. En effet, en assembleur, on ne dispose pas des lignes comme en BASIC alors on appelle des ‘labels’ pour sauter à une partie du programme.

Le pied de page est présenté ici mais je n’en parlerai pas, il ne vous apprendra rien de plus : En fait, je ne le maîtrise pas, alors je le laisse ;-)
Pour info, lorsque on tape un point virgule ; ce qui suis sur la ligne est du commentaire et ne sera pas interprété comme du code par l’assembleur.

Ce qui nous intéresse se trouve entre ces 2 parties :

C’est ici que nous allons taper notre 1er code….dans le prochain article.