APPLICATIONSPROGRAMMATION ★ MONITEUR (CPC REVUE) ★

Moniteur (CPC Revue)Applications Programmation
DESCRIPTION

Le programme, initialement implanté à partir de l'adresse &9500, occupe un peu plus de 4K.octets (&9500,A61 F). Les fonctions suivantes sont disponibles :

  • Désassemblage ROM ou RAM, listage en langage symbolique Z80.
  • Vidage mémoire ROM ou RAM (DUMP) en hexadécimal et en ASCII.
  • Assemblage, mini-assembleur à une passe.
  • Entrée de codes hexadécimaux.
  • Entrée de texte (ces deux fonctions à partir de l'assembleur).
  • Recherche d'une chaîne en mémoire vive ou en mémoire morte.
  • Exécution d'un programme, insertion possible d'un BRK simulé.
  • Déplacement d'octets vers le haut ou vers le bas de la mémoire.
  • Relogement du code déplacé par la fonction précédente (modification des adresses absolues internes).
  • Auto-déplacement du Moniteur.
  • Conversion hexadécimal -> décimal et arithmétique simple.

Les variables du programme sont logées dans la pile BASIC (à partir de &AE90). Une implantation adéquate ayant été choisie au préalable, la compatibilité avec un autre programme (BASIC ou langage machine) est cependant préservée car, au retour dans le moniteur, ses pointeurs sont réinitialisés.

Un chargeur BASIC est proposé pour l'entrée du Moniteur en mémoire. Après l'avoir tapé, faites-en une sauvegarde immédiate par SAVE"MONLD.

Si vous utilisez l'Editeur de Langage Machine (CPC n° 18), choisissez le mode 2, entrez le code en data à partir de l'adresse &9500 et vérifiez à l'aide des sommes de contrôle. Si votre machine est un CPC464, sauvegardez directement le code binaire conformément à la ligne 70, sinon tapez les lignes 30 à 70 puis RUN pour adapter le programme.

Après sauvegarde, le lancement sera automatique par RUN"MON.

MODE D'EMPLOI

Appelez le Moniteur, CALL &9500.

Sa position est affichée en haut de l'écran.

Le symbole * indique qu'il attend l'entrée d'une commande.

A défaut d'entrée, RETURN seul, il y a retour au BASIC.

La syntaxe générale d'une commande est son initiale suivie d'une ou plusieurs adresses en hexadécimal, sans espaces et sans le symbole &.

Deux exceptions, l'action sur la barre d'espacement suivie de RETURN efface
l'écran puis réaffiche la position du Moniteur ; les touches 1 et 2 font la même chose tout en sélectionnant le mode d'affichage correspondant.

Commande (L)ist, désassemblage

  • syntaxe : Ladresse(-adresse)
    < RETURN >.

Cette commande affiche en continu le listing de désassemblage commençant à l'adresse spécifiée jusqu'à une adresse de fin facultative.

L'action sur une touche quelconque provoque une pause.

Alors, la suite du listing est obtenue par une nouvelle action sur une touche ou bien RETURN redonne le symbole *, attente d'une nouvelle commande.

Si l'adresse de début le justifie, le choix du désassemblage de la ROM est proposé. Pour la ROM inférieure (si le moniteur n'est pas installé dans la zone d'adresses correspondantes), il suffit de répondre 'o' pour oui si le désassemblage de la ROM est désiré ou d'appuyer simplement sur RETURN dans le cas contraire. S'agissant des ROMS supérieures, on appuiera sur '0' (ou une touche quelconque) pour désassembler la ROM Basic ou sur '7' pour la ROM Disc ou sur RETURN pour la RAM écran.

Si l'imprimante est branchée et sous tension, l'impression est proposée. Répondre par 'o'ui ou par 'n'on. Même procédure pour arrêter momentanément ou définitivement l'impression.

Commande (D)ump,
vidage hexa et ASCII

  • syntaxe : Dadress(-adresse)
    < RETURN >.

Le contenu de la mémoire est affiché en hexadécimal, en continu à partir de l'adresse spécifiée et jusqu'à une adresse de fin facultative. Les caractères ASCII correspondants apparaissent sur la même ligne.

Les caractères de contrôle sont ignorés et remplacés par un point.

Procédures strictement identiques à celles de la commande 'L' en ce qui concerne l'action sur une touche ou sur RETURN et les options 'Rom' ou 'lmp'.

Commande (F)ind, recherche

  • syntaxe : Fadress(-adresse)
    < RETURN >.

Recherche d'une chaîne en mémoire vive ou morte. La deuxième adresse est facultative. Mêmes options 'Rom' ou 'lmp' que pour les commandes précédentes. La suite peut être exprimée en hexadécimal ; dans ce cas le premier code sera précédé du symbole &, exemple, soit à rechercher CD, 5A, BB (CALL &BB5A)
dans le Moniteur :

F9500-A61F ?:&CD5ABB

Une chaîne de caractères ASCII sera précédée d'un guillemet.

Exemple : F0000-3FFF (en Rom) ? :"Amstrad

Le joker @ ou 40 hexa peut être utilisé pour remplacer un ou plusieurs caractères, exemple la commande F8000-8FFF ?:&CD40BB recherchera tous les CALL &BB.. (avec aussi évidemment BB40).

Dans l'exemple précédent la chaîne aurait pu s'écrire Am^tr^d.

Si la chaîne existe en mémoire, la ou les adresses correspondantes sont affichées ou imprimées.

Commande (G)o, exécution d'un programme

  • syntaxe : Gadress

    < RETURN >.

Lancement d'un programmé en langage machine. Un RET en fin de programme assurera le retour au moniteur.
Une facilité associée à la commande (G)o permet l'introduction d'un point d'arrêt à un endroit choisi du programme.

  • syntaxe : Gadress-adresse du point d'arrêt
    < RETURN >.

Au point d'arrêt, le programme est interrompu avec retour immédiat au moniteur. L'adresse est affichée ainsi que le contenu des registres à cet endroit de l'exécution du programme.

Le point d'arrêt doit être choisi avec discernement. S'il est mal placé, au milieu d'une instruction CALL ou JP par exemple, le pire peut arriver.

Commande (M)ove, déplacement d'octets

  • syntaxe : Madress début-adresse fin > destination
    < RETURN >.

Cette commande permet de déplacer un bloc de code vers le haut ou vers le bas dans toute la mémoire vive. Le transfert de ROM en RAM est possible. Cette option est proposée le cas échéant.

Il n'y a pas de limitation particulière. La seule condition est que le bloc source existe, c'est-à-dire que l'adresse de tin soit supérieure ou égale à l'adresse de début. On doit s'assurer que le code à déplacer ne risque pas d'écraser des valeurs à préserver (adresses du système ou programme existant).

Commande (R)eloc, relogement du code

  • syntaxe : Radresse début code à reloger-adresse fin
    < RETURN >.

Cette commande modifie les adresses absolues internes. Elle n'est pas utilisable isolément et doit suivre immédiatement une commande (M)ove dont elle est un complément éventuel.

Prenons un exemple concret :

Soit un programme situé en &1000-2FFF à transférer en &4000 et à reloger. Des blocs de données (tables ou messages) sont insérés dans le code actif selon le schéma suivant :

&1000 &1500 &154F &2000 &20FF &2FFF
< > < >


début code données code données code fin Les données ne doivent pas être traitées par la routine de relogement. La séquence des commandes sera :

M1000-2FFF > 4000 R4000-44FF
R4550-4FFF R5100-5FFF

Limitations :

Le début du relogement doit correspondre au premier octet d'une instruction (code opératoire).

Le moniteur n'est pas capable de lever l'ambiguité qui peut se présenter entre ce qu'on appelle l'adressage absolu et l'adressage immédiat étendu. Par exemple, dans l'instruction LD HL,8D00, la valeur &8D00 peut désigner une adresse ou une constante sur deux octets. Cette dernière risque d'être affectée par un relogement intempestif. Cet inconvénient serait évité si les deux registres étaient chargés séparément (LD H,8D et LD L,00).

Il est nécessaire de connaître la structure du programme à reloger (instructions et données). Ce n'est pas toujours facile.

Commande (X)mon, déplacement du Moniteur

  • syntaxe : Xadresse < RETURN >.

Le Moniteur s'implante à l'adresse spécifiée.

Il utilise, pour se reloger, la routine de la commande précédente.

Il est immédiatement opérationnel à son nouvel emplacement.

L'adresse choisie doit être comprise entre 0100 et 99FF.

Le déplacement doit être supérieur ou égal à la longueur du moniteur (&1120).

Commande (A)ssemblage, mini-assembleur

  • syntaxe : Aadresse de début d'assemblage < RETURN >.

L'adresse spécifiée est affichée suivie de deux-points.

Une instruction en langage d'assemblage peut être tapée suivie de RETURN. L'action sur RETURN seul assure le retour au Moniteur.

Une instruction incorrecte, signalée par Bip, est effacée et l'adresse est réaffichée sur la même ligne.

L'assembleur est strict en matière de syntaxe.

Un espace doit suivre l'opérateur. Tout autre espace est interdit.

Seul l'hexadécimal est reconnu pour l'opérande. Les valeurs ou adresses sur 8 ou 16 bits doivent être écrites sans symbole &, sur deux ou quatre chiffres, c'est-à-dire avec leurs zéros non significatifs (exemples : 0F, 0100).

La pseudo-instruction DEFW est incluse pour faciliter l'utilisation des instructions RST. Elle apparait au désassemblage après RST 08, RST 10, RST 18 et RST 28.

Entrée de code ou de texte

En cours d'assemblage, l'entrée de code hexadécimal ou de texte est possible. Le code sera précédé du symbole &.

Exemple : 9000:&CD5ABB

Si l'entrée est incorrecte, elle est reproduite sur la ligne suivante pour modification.

Le texte sera précédé d'un guillemet. Exemple : 9000:"Bonjour

Commande
conversion, arithmétique

La valeur hexadécimale (comprise entre 0 et FFFF) suivant le point d'interrogation est convertie en décimal. Additions et soustractions de deux v/aleurs sont possibles, ces dernières étant séparées par les signes + ou -, sans espace.
CPC n°23

★ EDITEUR: CPC Revue
★ ANNÉE: 1987
★ CONFIG: 64K + AMSDOS
★ LANGAGE:
★ LiCENCE: LISTING
★ AUTEUR: André Cheniere
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» Moniteur    (Andre  Cheniere-CPC  Revue)    FRENCHDATE: 2015-11-20
DL: 228
TYPE: ZIP
SiZE: 15Ko
NOTE: 40 Cyls
.HFE: Χ

» Moniteur    (Andre  Cheniere-CPC  Revue)    LISTING    FRENCHDATE: 2015-11-20
DL: 300
TYPE: text
SiZE: 18Ko
NOTE:

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Variablen King (CPC Amstrad International)
» Applications » Le Messie/Compilateur Intègral
» Applications » Remark-Vernichter (CPC Amstrad International)
» Applications » Nevada Basic
» Applications » Mini Pilot (Computing With the Amstrad)
» Applications » SPR-Converter v2
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 554 millisecondes et consultée 1877 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.