| ★ CODING ★ CLASSEURS WEKA ★ Comment exploiter toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★ |
| 4/2.12 MAXAM, assembleur/désassembleur RAM, ROM et Basic (29e Complément) | Coding Classeurs Weka |
4/2 - Assembleur Z80 : Définitions et rappels de base4/2.12 MAXAM, assembleur/désassembleur RAM, ROM et Basic Nous avons décidé de vous présenter, dans ce chapitre, l'assembleur qui, à nos yeux, semble être actuellement le plus intéressant actuellement sur CPC. Ce logiciel est disponible, pour les trois versions de CPC (464, 664 et 6128) sous forme de disquette (MAXAM DISC) ou d'EPROM (MAXAM ROM). Nous vous conseillons, vous ne le regretterez pas si vous avez décidé de faire du langage machine Z80 votre langage de prédilection, mais aussi pour vous initier, de disposer de celui-ci sous la présentation EPROM (abusivement appelée version ROM), car étant beaucoup plus souple d'emploi. MAXAM est un logiciel édité par ARNOR Ltd, et distribué en France par Jessico - BP 693 - 06012 Nice Cedex - Tél. : 93 51 61 30. Installer MAXAM MAXAM DISC MAXAM DISC s'installe comme un logiciel classique par l'instruction RUN "MAXAM", qui vous propose trois choix :
Les possibilités offertes par MAXAM Pas question ici de faire double usage avec le mode d'emploi, fourni traduit et accompagné du mode d'emploi original (en anglais). Notre but est de vous faire découvrir les possibilités de ce logiciel, avec parfois quelques compléments d'informations n'apparaissant pas dans la documentation, et de vous permettre de retirer les pages correspondantes pour servir d'aide mémoire. Les commandes EPROM Ce paragraphe s'adresse uniquement aux possesseurs de MAXAM en version EPROM, car il résume les instructions RSX disponibles uniquement sur cette version.
Il est conseillé de réaliser le chargement de MAXAM après réinitialisation complète de votre CPC. MAXAM ROM MAXAM ROM est certainement la plus intéressante des deux versions car elle n'utilise que 260 octets de mémoire et est toujours disponible. Pour installer l'EPROM contenant MAXAM, il est nécessaire que vous disposiez d'un support ROM, tel que la ROM-BOARD (voir Partie 8 chapitre 6.4). Vous pouvez aussi installer l'EPROM sur tout autre interface possédant un support EPROM 16 kilo-octets telle l'interface série Amstrad, moyennant la perte du logiciel de celle-ci. Nous vous déconseillons par contre de l'échanger contre l'EPROM de l'interface disquette VORTEX, celle-ci étant codée et en empêchant le fonctionnement.
Ce paragraphe décrit sommairement toutes les commandes disponibles sur les deux versions de MAXAM.
La force certaine de MAXAM réside dans ses possibilités d'utilisation de l'assembleur directement sous Basic grâce aux commandes |ASSEMBLE et |ASSEM. Le déboggage est assuré par la possibilité de recherche de chaînes de caractères (pouvant être des mnémoniques du Z80), mais aussi par la possible introduction de points d'arrêts, avec affichage automatique des registres. Prenons plutôt un programme exemple : 10 MEMORY &7FFF : REM réservation mémoire pour le code machineEn ligne 10, le programme déplace le pointeur HIMEM pour réserver la place au code machine. |
| T | Text editor : accède au menu de l'éditeur. |
| D | Disassemble : permet un désassemblage d'une zone mémoire. |
| DP | Disassemble to printer : désassemble une partie de la mémoire sur imprimante. |
| L | List memory : donne les codes hexadécimaux et leur traduction ASCII d'une partie de la mémoire. |
| LP | List memory to printer : donne les codes hexadécimaux et leur traduction ASCII d'une partie de la mémoire sur imprimante. |
| S | Select upper ROM : permet de sélectionner une ROM haute par son numéro. |
| O | Lower ROM on/off : permet de sélectionner ou non la ROM inférieure (système d'exploitation). |
| E | Edit memory : permet d'éditer une partie de la mémoire pour y effectuer des modifications. |
| F | Findstring : permet de rechercher une chaîne de caractère en mémoire. |
| FP | Find string and print : recherche une chaîne de caractère en mémoire et imprime toutes les adresses auxquelles elle est rencontrée. |
| M | Move memory block : déplace un bloc mémoire. |
| R | Relocate block : reloge un bloc mémoire en recalculant les adresses. |
| I | Initialise block : initialise un bloc mémoire avec une valeur donnée. |
| C | Compare blocks : compare deux blocs mémoire. |
| CP | Compare and print : compare deux blocs mémoire et imprime les différences. |
| X | Extemal commands : permet d'exécuter une commande RSX. |
| B | Basic : redonne le contrôle au Basic. |
L'éditeur
Lors du choix T du menu précédent, vous accédez à un nouveau menu dont voici la signification :
| E | Edit text : permet d'éditer le texte source. |
| L | Load : charge un fichier ASCII depuis la disquette pour remplacer le texte source en cours. |
| LB | Load block : insère dans le texte source en cours, à la position du curseur, un fichier ASCII depuis la disquette. |
| S | Save : sauve le texte source en mémoire sur disquette. |
| SB | Save block : sauvegarde un bloc du texte source sur disquette. |
| P | Print : imprime le texte source. |
| PB | Print block : imprime un block du texte source. |
| M | Modify : modifie la présentation du texte source selon quatre options : — option 1 : ajoute des numéros de ligne ; — option 2 : ajoute des apostrophes sur chaque ligne ; — option 3 : supprime les numéros de lignes ; — option 4 : supprime les apostrophes. |
| MB | Modify block : modifie la présentation d'un bloc de texte source (voir Modify). |
| G | Go to line : accède à l'éditeur sur une ligne spécifiée du texte source. |
| F | Find : permet de rechercher une chaîne de caractères dans le texte source. < COPY > permet de continuer la recherche. |
| R | Find & replace : recherche une chaîne de caractères et permet le remplacement par une autre. |
| T | Tabs : permet de définir les tabulations pour l'édition du texte source. |
| A | Assemble text : assemble le fichier source. |
| J | Jump to code : permet l'exécution du code généré par l'assemblage. |
| X | Externat commands : permet d'exécuter des commandes RSX. |
| Q | Quit : retourne au menu principal de MAXAM. |
Vous vous reporterez, pour la liste des codes opératoires du Z80 en Partie 4 chapitre 2.4 pages 1 à 4, par contre, voici la fiche résumée des principales directives et commandes d'assemblage (vous remarquerez que plusieurs directives correspondent à la même action, ceci pour garder une certaine compatibilité entre les différents assembleurs existant).
| BRK | Fixe un point d'arrêt. |
| BYTE | Permet de placer une suite de données sur huit bits, sous forme d'octets ou de chaînes de caractères. |
| CLOSE | Ferme un fichier objet ouvert sur disque. |
| CODE | Annule la directive NOCODE. |
| DB | Permet de placer une suite de données sur huit bits, sous forme d'octets ou de chaînes de caractères. |
| DEFB | Permet de placer une suite de données sur huit bits, sous forme d'octets ou de chaînes de caractères. |
| DEFM | Permet de placer une suite de données sur huit bits, sous forme d'octets ou de chaînes de caractères. |
| DEFS | Réserve un bloc mémoire en cours d'assemblage. |
| DEFW | Permet de placer des mots sur 16 bits en mémoire. Attention, les octets haut et bas seront inversés. |
| DS | Réserve un bloc mémoire en cours d'assemblage. |
| DUMP | Permet l'affichage de la table des symboles en fin d'assemblage. |
| DW | Permet de placer des mots sur 16 bits en mémoire. Attention, les octets haut et bas seront inversés. |
| ELSE | Assemble si la condition IF n'est pas réalisée. |
| END | Fin d'assemblage. |
| ENDIF | Fin de condition IF. |
| EQU | Directive d'équivalence de codes ou d'adresses. |
| GET | Permet de passer des paramètres depuis le Basic vers le code machine (uniquement utilisable sous Basic). |
| IF | Assemblage conditionnel avec condition vraie. |
| IF1 | Test de condition sur la première passe de l'assemblage. |
| IF2 | Test de condition sur la deuxième passe de l'assemblage. |
| IFNOT | Assemblage conditionnel avec condition fausse. |
| LET | Affecte un symbole, avec possibilité de redéfinition. |
| LIMIT | Fixe l'adresse limite de génération du code (pour ne pas déborder sur un autre programme). |
| LIST | Autorise le listing sur l'écran. |
| LISTP | Déroule le listing vers l'imprimante. |
| NOCODE | Supprime la génération du code en mémoire. |
| NOLIST | Inhibe le listing. |
| ORG | Défini l'origine d'assemblage pour la génération du code objet. |
| PAGE | Provoque un saut de page. |
| PAUSE | Arrête l'assemblage et attend la frappe d'une touche. |
| PLEN | Fixe la longueur des pages pour l'affichage ou l'impression. |
| Affiche un message à l'écran. | |
| PUT | Restitue une valeur au Basic (utilisable uniquement par assemblage sous Basic). |
| READ | Lit un fichier source sur disquette. |
| RMEM | Réserve un bloc mémoire en cours d'assemblage. |
| TEXT | Permet de placer une suite de données sur huit bits, sous forme d'octets ou de chaînes de caractères. |
| TITLE | Définit un titre sur chaque page de listing. |
| WIDTH | Fixe la largeur des pages pour l'affichage ou l'impression. |
| WORD | Permet de placer des mots sur 16 bits en mémoire. Attention, les octets haut et bas seront inversés. |
| WRITE | Ecrit un fichier objet sur disquette. |
| Page précédente : 4/2.11 III - Les interruptions logicielles (SOFT) |
|
Page créée en 095 millisecondes et consultée 510 fois L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko. |