CODING - TUTORIAL 1 , UTILISATION DE MAXAM

MAXAM est un logiciel qui permet de générer un code binaire à partir  d'un fichier source édité en ASCII. Pour parvenir à ses fins il dispose de :

D’un éditeur permettant la création des fichiers source joint à un assembleur générant le code binaire à partir du fichier ASCII précédemment édité et d’un Moniteur ( débuggeur ) / désassembleur destiné à fouiller dans la RAM ou les ROMS basic ou externes . MAXAM permets également de créer du code source à partir de lignes BASIC.

L'utilisation de MAXAM est très simple, en effet suffit de le lancer avec la commande AMSDOS ( pour la version distribuée dans ce tutorial ) :

Run"disc

Une fois de retour au Basic, tape la commande RSX :

ùM ( pour les clavier AZERTY )

ou

|M ( pour les clavier QWERTY )

Un premier menu apparaît … taper « T » pour accéder au sous-menu « Edit Text ».
Puis « E » pour accéder a l’éditeur de source.

Maintenant nous sommes près à écrire notre premier programme.

Le ORG ( origine )

Donnons à notre compilateur ( ici MAXAM ) l’adresse d’implantation du code que nous allons assembler, avec la directive ORG ...

          ORG  10000

Ici en 10000, donc nous utiliserons ORG 10000, c’est-à-dire que notre programme pourras être exécuter avec un CALL 10000 à partir du basic ou a partir d’un autre programme en langage machine ( ou assembleur ).
Noter qu'une directive n'est pas une instruction! L'instruction implante un code binaire en  RAM , la directive donne un ordre précis à l'assembleur. Que l'on utilise l'assemblage sous  BASIC ou l'éditeur, ces directives ont exactement le même rôle!

Revenons à ORG pour dire que c'est cette instruction qui dit à l'assembleur ou commencer l'assemblage. ORG peut s'exprimer sous 2 formes:

1 / ORG <Expression> : Expression peut être une simple adresse, Ex : ORG 10000
 commence l'assemblage en 10000 , le résultat d'un calcul Ex : ORG 5000*2 commence
 toujours l'assemblage en 10000 , voire contenir des labels définis par le programme, Ex :
 ORG ADRESSE+7 assemblera en 10007 .
 ADRESSE EQU 10000

 2 / ORG <Expression1 , Expression2> : Cette forme sera souvent utilisée avec les
 versions disquette ou cassette. En effet, on aura parfois besoin de fichiers binaires
 exécutables à une adresse occupée par MAXAM au cours de l'assemblage. Dans ce cas,
 <Expression1> contiendra l'adresse où DOIT S'EXECUTER LE CODE BINAIRE et
 <Expression2> l'adresse ou l'assembleur STOCKE LE CODE BINAIRE.

Début de mon premier programme
 

Nous allons dans cette exemple utiliser les vecteurs system &BC0E qui à la charge de changer le mode vidéo du CPC

          LD    A,0             ; mode 0
          CALL &BC0E            ; Init le mode graphique

simple non ?

Ont continue avec la modification de la couleur du "border" par la couleur 0 ( le noir )

          LD   B,0              ; couleur 1
          LD   C,0              ; couleur 2
          CALL &BC0E            ; Init la couleur du "Border"

Pourquoi définir deux couleurs ? tout simplement pour le faire clignote ! ( Biensur le cliognotement entre la couleur 0 et la couleur 0 est invisible à l'écran)
Pour faire plus simple, plus propre, et aussi plus rapide ... utilisons l'initialisation du vecteur BC par la valeur 0

Donc remplaçons la partie du code précédent par ...

          LD   BC,0             ; couleur 1 et 2 à 0
          CALL &BC0E            ; Init la couleur du "Border"
 

http://cpcrulez.fr
 

A voir aussi sur CPCrulez , les sujets suivants peuvent vous intéresser...

» Coding - Crossdev - CCZ80
» Coding - Crossdev - Mycpctoolkit
» Coding - Crossdev - PhrozenC
» Coding - Crossdev - Cpcrslib

» Laisser un commentaire ou  en discuter sur le forum ...