CODING ★ Convertion numerique ★

Assembleur ACPC n°20 - Convertion numerique
AS: ÇA C'EST COOL

Encore une petite initiation a l'assembleur ! Cela ne va pas tarder a faire un an que nous tirlipotons le Z80 ensemble, et pour le mois prochain, vous aurez un petit train pour changer du train-train mensual. Je voudrais juste que Poum me fasse la musique. Si ça marche, on va danser dans les chaumiènes.

Tout le monde connaît le CALL &BB5A, premier vecteur utilise par tous et toutes (mes hommages mesdames et mesdemoiselles). Mais qui connaît vraiment le fonctionnement de cette routine? Comme vous avez dû vous en apercevoir, la mémoire écran est organisée de façon étrange. Si vous ne vous rappelez pas cette disposition des lignes mémoires qui forment l'écran, reportez-vous au courrier des lecteurs de notre bon Franckie, paru il y a quelques mois. Dans tous les cas, et avant tout, nous allons vous rappeler les régles essentielles qui permettent de comprendre l'assembleur et le langage machine.

WOUALAUTAI, MAROLPA !

(Septh : "Mais j't'arol pas moi !") Ce furent les paroles du chef après mon explication sur ce qui va suivre (il est con ce chef, et encore, je dis con pour ne pas paraître vulgaire dans le cadre de ce magazine). Si on voulait faire une approche réelle de l'assembleur par le Basic, il faudrait prendre en considération les choses suivantes :

  • Les seules instructions utilisables seraient PEEK, POKE, +, -, GOSUB, RETURN et GOTO, le tout avec un nombre de variables assez limite.
  • Les variables sont obligatoirement des entiers de 8 ou 16 bits.
  • Le Basic serait assez rapide pour piloter les périphériques.

Dans le cas où vous êtes capables de programmer en Basic avec ces seules instructions, aucun problème ne se pose pour vous, et vous avez l'autoroute des logicie1s ouverte devant vous. Dans le cas contraire, essayez déjà de vous faire des petites manipulations d'écrans avec ce type de programmation. Affichages et déplacements peuvent ainsi être analysés et programmés sans risques de plantage, et le contenu d'une variable peut être analyse a tout moment. De plus, et c'est un super avantage, la touche Esc marche, et rien ne plante lamentablement. Bref, il est possible de réaliser un émulateur escargot, simplement conçu pour simplifier l'analyse et la compréhension. Essayez et vous verrez, il n'y a rien de mieux pour bricoler sans s'ennuyer.

QUOI DE NEUF : VECTEURS ?

Donc, comme promis, voici une petite description du fonctionnement du vecteur &BB5A qui sert autant qu'une paire de chaussures neuves trop petites. Comme vous le savez, il n'est possible d'accéder a l'ecran que par des POKES et des OUT (mais si, on vous l'a dit dans les bidouilles). Donc, le simple fait d'afficher un caractère ne se fera pas en une seule étape.

Avant tout, il faut savoir dans quel mode est le CPC, car la mémoire écran ne réagit pas de la même manière selon qu'il est en mode 0, 1 ou 2. Un petit test est nécessaire pour savoir si le caractère doit être affiche ou interprète. Dans le cas d'une interprétation, la routine se branche sur les ordres graphiques correspondants. Ensuite, il faut calculer l'adresse où viendront les points représentant le caractère a positionner, selon les lignes et colonnes désirées. Cela fait, il faut aller chercher en ROM ou en Ram, selon que les matrices de caractères ont été modifiées ou non, les octets contenant les points a afficher. Ces données seront modifiées ou non, selon que le mode 2 est positionne ou pas. Enfin, si aucun scrolling n'est nécessaire, le caractère sera affiche ligne par ligne, avec des calculs pour les sauts dus a l'organisation de la mémoire écran. Pour finir, les variables contenant la ligne et la colonne suivante seront modifiées. La routine reviendra suivre le cours du programme comme si rien ne s'était passe.

Bref, vous pouvez vous imaginer qu'avec tout ce qu'il y a a faire, seulement avec des PEEKS, des POKES, des + et des -, il faut commencer a se casser la tête, si on ne veut pas s'embrouiller rapidement. Si je vous ai raconte ça. ce n'est pas pour vous décourager. loin de la mon idée, mais simplement pour que vous entrevoyiez le travail nécessaire a la mise en place d'un programme totalement en assembleur. La seule qualité demandée pour ce genre de programmation est la patience et la persévérance. Que les octets vous protégent !

LE VECTEUR SONNE TOUJOURS DEUX FOIS

Dans le cadre de nos initiations a l'assembleur. voici quelques vecteurs offerts gracieusement par toutes les grandes marques de machines a laver. Ces vecteurs sont appelables en assembleur après avoir charge les registres avec les valeurs préconisées.

  • CALL &BB5A : affiche à l'écran le caractère contenu dans l'accumulateur. Tous les registres sont préserves.
  • CALL &BB06 : attend qu'un caractère soit tape (ale, pas sur la tête) au clavier. et renvoie son code ASCII dans A Tous les registres sont préserves.
  • CALL &BB09 : regarde si un caractère est disponible. Dans le cas où, au retour de rappel, la retenue est positionnée, alors le caractère est dans A, sinon, tout est faux.
  • CALL &BB24 : teste le joystick, et renvoie dans les registres A et H l'état du premier et dans L, l'etat du second. La valeur renvoyée est la même que celle de l'instruction JOY
  • CALL &BB60 : donne le code Ascii situe à la position courante du curseur, s'il a été reconnu. Dans le cas où le caractère ne correspond pas a la matrice, la retenue est à zéro et tout est faux.
  • CALL &BB6C : exécute un petit CLS bien de chez nous. Tous les registres sont modifies. .
  • CALL &BB75 : positionne le curseur en ligne L et en colonne H. AF est modifie en plus de HL.
  • CALL &BB78 : renvoie la position du curseur dans HL et le compteur de lignes scrollées dans l'accumulateur.
  • CALL &BB8A : positionne le curseur a l'écran.
  • CALL &BB8D : enlève le curseur de l'écran.
  • CALL &BB90 : positionne la couleur de l'encre pour les caractères. AF contient le PEN et HL est modifié.
  • CALL &BB93 : lit la couleur de l'encre des caractères et la renvoie dans A
  • CALL &BB96 : positionne la couleur du fond (PEN dans A) en mode texte AF et HL sont modifies.
  • CALL &BB99 : lit la couleur du fond [la renvoie dans l'accumulateur.
  • CALL &BBA5 : lit la définition du caractère dont le code Ascii est dans A et fait pointer HL sur son adresse. S'il faut commuter la Rom, le carry est faux. Dans le cas contraire, la retenue et positionnée et la matrice est alors en RAM. Tous les registres sont modifiés.
  • CALL &BBA8 : redéfinit le caractère contenu dans A avec la matrice pointée par HL. Si le caractère est redéfinissable, la retenue est positionnée. Tous les registres sont modifies.

Voila qui clôt cette liste primaire des vecteurs utilisables en mode texte. Nous verrons les suivants le mois prochain, dans le petit train.

EN VOITURE, SIMONE

Je veille personnellement a ce que notre petit train parte bien le mois prochain dans les campagnes vidéo de notre fabuleux CPC. En vous souhaitant de passer de bons moments de programmation en machines, je vous salue bien bas, mes seigneurs des temps modernes. Que le silicium magique vous protège.

Sined le Miss-tique

Page précédente : Assembleur ACPC n°19 - Création d'RSX

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

Lien(s):
» Coding » Bidouilles ACPC n°38 - Lecture sans AMSDOS
» Coding » Bidouilles ACPC n°39 - Gestion directe du FDC 765
» Coding » Assembleur ACPC n 04 - Initiation : Débuter avec sont assembleur
» Coding » Assembleur ACPC n°34
» Coding » Bidouilles ACPC n°17 - Le catalogue AMSDOS
» Coding » Assembleur ACPC n°39 - L'addition s'il vous plait
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 214 millisecondes et consultée 1721 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.