CODING ★ AS: ÇA C'EST COOL ★

Assembleur ACPC n°14 - 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, ACPC n°14

Page précédente : Bidouilles ACPC n°13 - Bidouilles pas bidon - MODE 1 en 13 couleurs

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

Lien(s):
» Coding » Bidouilles ACPC n°34 - Banques de mémoire
» Coding » Assembleur ACPC n°40 - Le CARRY
» Coding » Bidouilles ACPC n°40 - Gestion d'erreurs des routines disques
» Coding » Bidouilles ACPC n°37 - Gestion de la matrice de caractere
» Coding » Assembleur ACPC n°41 - Les flags, grands délires
» Coding » Assembleur ACPC n 04 - Initiation : Débuter avec sont assembleur
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.732-desktop/c
Page créée en 450 millisecondes et consultée 2133 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.