CODING ★ INITIATION A l'ASSEMBLEUR : L'HOMME DU SCROLL MIGNON ★

Assembleur ACPC n°30 - L'homme du scroll mignon

Il y a bien des milliers d'années, notre planète était peuplée de créatures appelées hommes, dont la principale préoccupation était de chasser pour remplir leurs estomacs. Maintenant, il existe des terrains de chasse moins périlleux : les supermarchés.

Le carnet de chèques a remplacé les armes de jet, le stylo s'est substitué au silex, mais il existe toujours le même rituel : c'est le premier passé qui prend ce qu'il y a de meilleur. Rien à voir avec le cours assembleur, diront certains ! Nous penserons simplement que ces gens n'ont pas lu le titre. Ce mois-ci, nous vous avons concocté un petit plat de chez nous : un scrolling. Faire défiler des caractères à l'écran est tout ce qu'il y a de plus simple. Mais nous voulons vous prouver ici la petite chose suivante : lorsqu'un programme est mis au point, il n'est pas forcément nécessaire de se laisser aveugler par ce qui saute aux yeux. En ce qui nous concerne, il nous faut afficher des caractères à l'écran. La plupart des novices diront qu'il nous faut passer par une routine du style &BB5A. Réécrire ce genre de programme serait laborieux car nous n'en avons pas vraiment besoin. Ce qu'il nous faut, c'est une partie de ce programme. Celle qui se chargera de transporter les données des caractères vers l'écran. Le second fait est que plus le travail est mâché lors de la disposition des données et moins le programme aura à travailler lors de son exécution. Nous devons donc organiser les données de manière qu'elles soient le plus directement accessibles pour le programme.

A notre avis de vieux praticiens, ce qui compte le plus est le coding, soit la manière dont sont orchestrées les données. Nous allons vous le prouver immédiatement en vous donnant l'exemple d'un scrolling horizontal.

DIS CODING CONG !

La partie se chargeant du coding est le programme Basic créateur de la fonte. Il permet de stocker quarante caractères en mémoire, qui sont préalablement agrandis en ayant leur hauteur doublée. Pourquoi passer par un programme Basic plutôt que par l'assembleur pour faire ce genre de choses ? Parce qu'il est plus simple d'intervenir sur des chaînes dans ce langage. Peu importe le temps que prendra la préparation, c'est l'exécution qui compte. La première ligne du programme permet de spécifier quels seront les caractères à coder. Vient ensuite le moment de récupérer la matrice de tous les caractères contenus dans la chaîne. Pour cela, chacun d'eux est affiché en 1,5, soit sur la première colonne de la cinquième ligne en mode texte. Une exploration graphique à l'aide de la commande TEST permet de connaître quels sont les points affichés des caractères sélectionnés. Cela fait, le caractère en cours de traitement est affiché en taille double. Ce sont les boucles FOR-NEXT qui contiennent ce recalibrage de caractères. Rien ne vous empêche de sauver la page écran pour retravailler la fonte sous OCP il ne tient aussi qu'à vous d'ajouter des couleurs à ce triste jaune que nous vous proposons. Nous ne travaillons ici que le principe et le look du résultat vous incombe directement.

ALDO RYTHME LA CLASSE

Voici le bête principe du listing assembleur. Comme il faut que les caractères glissent sur l'écran, il est impossible de les afficher en une seule fois. Nous les enverrons donc à l'écran par colonnes. Comme ils font quatre octets de large, il faudra quatre appels de la routine pour afficher un caractère dans son intégralité. De ce fait, il est logique que la matrice de ces caractères soit stockée en colonne puisqu'elle est affichée de la même manière. Avant d'afficher un caractère, les seize lignes formant alors le scrolling à l'écran sont décalées d'un octet vers la gauche libérant ainsi la colonne de droite. Cette colonne libre est ensuite remplie par les octets manquant pour former le dernier caractère, voire le suivant. Le principe est donné, passons à la réalisation.

DATAS D'ATTAQUE

La petite routine implantée dans ce programme sous forme de codes hexadécimaux sert à stocker la fonte en mémoire à l'adresse 37 000. Toutes les données des caractères sont stockées à l'octet. Il faut alors savoir comment. Sachez que dans le mode 0, un caractère fait quatre octets de large. Normalement, il faut huit octets pour représenter sa hauteur mais dans notre cas, comme nous avons doublé cette taille, il en faudra seize. Pour répondre aux contraintes citées dans le paragraphe précédent, il nous faut implémenter les caractères par colonnes. Le premier octet composant un caractère est celui en haut à gauche, le suivant se situe sous le premier, etc. Lorsque la colonne est finie, nous passons à la seconde et de file en aiguille, on se pique. C'est donc à cette tâche que travaille la petite routine. Si vous augmentez le nombre de caractères prévus, soit quarante, il vous faudra modifier tout ce programme, ce qui ne sera pas compliqué si vous en avez compris le principe. La troisième partie du premier programme Basic sert à implanter la chaîne de caractères à scroller. Le message peut être quelconque, quoique les caractères utilisés doivent, bien entendu, avoir été cités dans la fonte à utiliser. Remarquez que ce n'est pas le code ASCII du caractère qui est sauvé, mais sa position dans la chaîne de fonte. "Sauvez-moi tout ça, mes cailles", est le dernier ordre à donner.

QUELQUES MOIS PLUS TARD...

C'est toujours la même chose. S'il y a des listings, il y a moins de texte et dans le cas contraire, il y a moins de listings. Dis-moi, Monsieur 100 %, tu peux pas les faire un peu plus grandes, tes pages ???

Poum & Sined, A100 n°30

Page précédente : Bidouilles ACPC n°29 - Le secret des disquettes

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

Lien(s):
» Coding » Bidouilles ACPC n°31 - RSX
» Coding » Bidouilles ACPC n°03 - Catalogue décorés
» Coding » Assembleur ACPC n°09 - Initiation : Les ADD / ADC / SUB / SBC
» Coding » Assembleur ACPC n°16: Organisation des pixels à l'écran
» Coding » Bidouilles ACPC n°34 - Banques de mémoire
» Coding » Assembleur ACPC n°29 - On assemble ensemble
Je participe au site:

» 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 234 millisecondes et consultée 1881 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.