★ APPLICATIONS ★ PROGRAMMATION ★ MONITEUR (CPC REVUE) ★ |
Moniteur (CPC Revue) | Applications Programmation |
DESCRIPTIONLe programme, initialement implanté à partir de l'adresse &9500, occupe un peu plus de 4K.octets (&9500,A61 F). Les fonctions suivantes sont disponibles :
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 Commande (L)ist, désassemblage
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,
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
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) F9500-A61F ?:&CD5ABBUne 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
Lancement d'un programmé en langage machine. Un RET en fin de programme assurera le retour au moniteur.
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
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
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 |
|
|