CODINGCLASSEURS WEKA ★ Comment exploiter toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★

9/8.05.2 - Programme de Dump en AssembleurCoding Classeurs Weka

9/8.5.2 Programme de Dump en Assembleur

Partons de la logique développée pour le Dump Basic mais détaillons-la de façon à ne laisser passer aucun point obscur.
Le Dump peut se décomposer en deux grandes parties (entrée des don­nées et affichage du résultat). Deux sous-programmes ont été créés à cet effet. Ils ont pour noms respectifs « ENTREE » et « DUMP ». Le pro­gramme principal qui occupe les adresses # 9000 à # 9006 se contente d'appeler ces deux sous-programmes.

Entrée des données

Affichage de messages

Plusieurs messages vont être affichés dans ce sous-programme. Pour faciliter les choses, nous utiliserons la routine TST Output du Firmware (en #8B5AI qui a l'avantage de préserver l'état de tous les indicateurs et de tous les registres. Cette routine affiche un caractère à la position courante du curseur. Pour afficher un texte, il faut donc réaliser une boucle sur cette routine. De plus, pour savoir que le texte à afficher est fini, il faut insérer un terminateur en fin de texte. Nous avons choisi le carac­tère de code ASCII 0 (nul).

Lecture de données au clavier

Le programme d'entrée des données va lire plusieurs données alphanu­mériques au clavier. Pour réaliser la lecture d'un caractère, nous utili­sons la routine KM WAIT CHAR (en #BB06 ). Pour lire une chaîne alphanumérique, nous devrons donc faire une boucle sur cette routine. Connaissant la longueur de la chaîne à saisir, la fin de la saisie se fera automatiquement.

Les routines d'affichage et de lectures mises en place, la structure du module d'entrée des données sera la suivante :

 

 

Affichage des données lues en mémoire

Initialisation

Pour augmenter le nombre de données par ligne (dans le cas où le résul­tat est sorti sur écran), le mode d'affichage choisi est le mode 80 colon­nes (MODE 2). Ce mode est activé grâce à la fonction SCR SET MODE (#BC0E) du FIRMWARE.

Si la sortie se fait sur Imprimante, le message « Impression en cours » est affiché sur l'écran, toujours grâce à la routine TXT OUTPUT.
L'adresse de départ de DUMP est mémorisée dans la variable mot « 11 ». Le numéro de la ligne affichée est mémorisé dans la variable octet « LIGNE ». Enfin, le buffer « BUFF » destiné à recevoir plusieurs données durant l'affichage est initialisé. Notez à ce sujet l'utilisation de l'ordre Assembleur « DJNZ » ligne 62 qui permet de réaliser des opérations répé­titives très aisément.

Affichage du DUMP

L'affichage se réalise en trois étapes :

–   adresse ;
–  données octets ;
–   valeurs ASCII correspondantes.
Les lignes affichées/imprimées ont la structure suivante :
Adresse 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16           ;ASCII

* Affichage de l'adresse

L'adresse est affichée/imprimée en utilisant une routine dont le but est de :
–   convertir une donnée hexadécimale codée sur un octet en deux données ASCII,
–   afficher ou imprimer ces deux données ASCII.

Une telle routine est nécessaire car l'affichage ou l'impression ne peut se faire qu'à travers des caractères ASCII.

La conversion HEXA – ASCII est faite en séparant l'octet de poids fort de l'octet de poids faible (chacun donnera un caractère ASCII). Chacun des deux quartets ainsi obtenus est comparé au chiffre 10. S'il est supérieur ou égal, le nombre # 37 est ajouté à quartet ; sinon, le nombre # 30 est ajouté au quartet. Ce qui se traduit par l'organigramme page suivante.

* Affichage des données octets

Chaque octet est affiché/imprimé en utilisant la routine de conversion/affi­chage décrite ci-dessus. A noter à ce sujet que deux routines ont
été développées. La première {de nom ECRECR) convertit un octet en deux caractères ASCII et affiche ces caractères sur l'écran). La seconde (de nom ECRIMP) convertit un octet en deux caractères ASCII et envoie ces deux caractères sur l'imprimante.
 

* Affichage des données ASCII correspondantes

Les données ASCII affichables et imprimables sur des imprimantes clas siques ont des codes compris entre 32 et 128. Tous les autres code: sont systématiquement ignorés par le programme de Dump et rempla ces par un point décimal (.).

Une fois les données ASCII affichées, la ligne de Dump suivante es amorcée :

–   dans le cas d'un affichage écran, si la 23" ligne n'a pas été atteinte
–   dans tous les cas, si toutes les données n'ont pas été affichées.

Les différents tests et actions cités ci-dessus s'enchaînent comme le mon­tre l'organigramme suivant :

Le programme assembleur a été saisi sous « ZEN ». Les instructions LOAD et END ne sont pas forcément nécessaires avec d'autres assembleurs. Le listing du programme est le suivant :


 















Ci-dessous, nous donnons un exemple d'impression obtenu entre les adresses #6000 et #610F.
 

Dump sur imprimante avec le programme ASM de Dump de 6000 à 6100

Il est également possible (pour aller plus vite) de saisir les codes hexadé-cimaux correspondant au programme assembleur sous BASIC.
Le listing du programme est alors le suivant :

 


Si vous décidez d'entrer le programme assembleur sous Basic, vérifiez les codes entrés grâce au programme de checksum (voir Partie 9, chap. 8.4).
Pour cela, tapez « MERGE » suivi du nom sous lequel vous avez sauvegardé le programme de checksum. Exécutez le programme de checksum en tapant « RUN 50000 ». Les données de vérification sont les suivantes :

C6 30 7F B4 E3 95 59 38 5F B7 87 14 32 4F 27 57 42 6F 95 Î9 F9 72 4B 77 DA 1E 1F C1 62 55 79 80 A6 DC 5C CE F5 7D C8 A7 E4 4A 5 2B 47 76 F8 43 AB 2D E8 4B BC F1 8B 8F

Si une ou plusieurs des données de vérification ne correspondent pas avec celles données ci-dessus, vérifiez la ligne correspondante.

Remarque :

Plusieurs données ont été rajoutées en fin de listing afin d'assurer la compatibilité avec le programme de checksum.


 

Page précédente : 9/8.05.1 - Programme de Dump en Basic

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