Les articles Amstrad >Les produits Amstrad > Les CPC > Programmation > Assembleur > 6.1 : Les vecteurs systèmes [fr-en] (Amstradeus)

6.1 : Les vecteurs systèmes [fr-en] (Amstradeus)

Les vecteurs systèmes sont des sous-programmes mémorisés en ROM. Ils ne sont pas forcément ultra rapides ni optimisés, mais ils facilitent souvent la programmation. Ils permettent la gestion des éléments suivants :

- Le clavier
- Le texte
- Les sons
- Le gestionnaire graphique
- Le gestionnaire d'écran
- Les accès disquette, cassette et les fichiers
- Le kernell
- L'interface matérielle

Exemple : le vecteur &BC0E dans le gestionnaire d'écran.

BCOE : changement de mode
CA : A contient le numéro du mode;
CF : rien;
: les registres AF, BC, DE et HL sont modifiés.

C'est l'équivalent de l'instruction MODE en basic. CA donne la liste des registres qui permettent de paramétrer le vecteur. Ici c'est le registre accumulateur A qui doit contenir le numéro de mode, soit 0,1 ou 2. CF contient les registres de sortie ou de résultat du vecteur (ici il n'y en a pas). Une indication supplémentaire indique toutefois les registres qui ont été modifiés, ici ce sont AF, BC, DE et HL. Avant de lancer un tel vecteur, il peut donc être nécessaire de sauvegarder ces derniers. L'exemple suivant permet de passer en mode 2.

Push AF
Push BC
Push DE
Push HL
 

Ld A,2
Call &BC0E
 

Pop HL
Pop DE
Pop BC
Pop AF
 

LE CLAVIER

BB00 : Initialise le clavier, les prédéfinitions (KEY, KEYDEF), le tampon clavier (CLEAR INPUT sur 6128), etc.
CA : Aucune.
CF : Les registres AF,BC,DE et HL sont modifiés.

BB06 : Attente d'une touche du clavier et renvoie son code dans l'accu (voir également BB18)
CA : Aucune.
CF: L'accumulateur = numéro du caractère (exemple : 66 pour la touche B du clavier).

BB09: Teste si une touche est enfoncée. Cette routine n'attend pas et doit être placée dans une boucle d'attente.
CA : Aucune.
CF : Si une touche est pressée, CARRY = 1 et Accumulateur = numéro du caractère, sinon CARRY=0 et l'accumulateur est modifie.

BB18: Attente d'une touche du clavier.
Cette routine se différencie de BB06 par le fait qu'elle renvoie pour quelques touches un code différent de BB06. Entre autres, les touches du pave numérique. Le vecteur BB18 renvoie des valeurs allant de 48 a 57 (codes Ascii) alors que BB06 donne 128 a 137 (valeur utilisable lors de la redéfinition d'une touche). La différence est vraie avec 139 pour ENTER (au lieu de 13 avec BB18) et 138 pour Ie "." du pave numérique (au lieu de 46 avec BB18).
CA : Aucune.
CF : L'accumulateur = numéro du caractère.

BB1B: Teste si une touche est enfoncée.
Cette routine n' attend pas et doit être placée dans une boucle d' attente.
Cette routine se différencie de BB09 par le fait qu'elle renvoie le numéro de la touche correspondant aux indications gravées sur le boîtier de votre CPC 6128 (exemple pour un clavier Azerty, la touche A correspond a 67).
CA : Aucune.
CF : Si une touche est pressée, CARRY = 1 et Accumulateur = numéro du caractère, sinon CARRY=0 et l'accumulateur est modifie.

BB21: Demande l'état de la touche CAPS LOCK et SHIFT.
CA : Aucune.
CF: L contient l'état de la touche CAPS et H celui de SHIFT. Notons qu'une valeur 0 signifie une touche non enclenchée et 255 une touche pressée.

BB24: Teste l'état du joystick.
Pour connaître la position d'un manche a balai, il faudra tester les 6 premiers bits de l'accumulateur (exemple BIT 1,A, JR Z,...).
CA : Aucune.
CF : A et H contiennent l'état du premier joystick et L l'etat du second. Les bits 0 a 5 de ces registres se placeront a 1 si les directions suivantes sont respectées ; haut, bas, gauche, droite, feu 2, feu 1. Exemple, pour un joy pointe vers le haut avec le bouton de feu enfonce, l'accumulateur aura ses bits 0 et 5 mis a 1.

BB3F: Réglage des temps de réponse et de répétition du clavier (SPEED KEY du Basic).
CA: H = temps avant la première répétition,
L = La vitesse de répétition.
Ces vitesses sont indiquées en cinquantième de seconde (LD H,50 pour une seconde).
CF : AF est modifié.

BB48: Désactive la touche ESC. Sous Basic cet appel sera utilise de la façon suivante :
10 CALL &BB48
20 GOTO 20
CA: Aucune.
CF : AF et HL sont modifies.


LE MODE TEXTE

BB5A: Affiche un caractère Ascii à la position courante du curseur texte (LOCATE).
C'est en somme l'équivalent de PRINT mais pour un seul caractère. Sachez que pour afficher une phrase, il faudra écrire une routine de lecteur qui affichera les caractères un par un. Contrairement au Basic, cette routine n' exécute pas de retour chariot ce qui évite de replacer le curseur pour le caractère suivant. Exemple Basic PRINT "A";
CA : L'accumulateur contient Ie code Ascii du caractère à afficher (exemple : 65 pour A).
CF: Tout reste en place.

BB60: Lit un caractère a la position courante du curseur texte.
Equivalent Basic de COPYCHR$.
CA : Aucune.
CF : Si la routine reconnaît un caractère, CARRY = 1 (JR C,..) et l'accumulateur contient le code Ascii de ce caractère, sinon, CARRY = 0 et A = 0.

BB66: Fixe les limites d'une fenêtre texte (WINDOW du Basic).
II est évident que cette commande réagira exactement comme le Basic. Pour travailler sur plusieurs fenetres en même temps (WINDOW#1, WINDOW#2...), il vous faudra redéfinir à chaque fois cette nouvelle fenêtre.
CA: H = Un côté de la fenêtre (droit ou gauche).
D = Le deuxième côté de la fenêtre (gauche ou droit).
L = Le troisième côté de la fenêtre (haut ou bas).
E = Le dernier côté de la fenêtre (bas ou haut).
CF: les registres A,F,H,L,B,C,D et E sont modifies.

BB69: Demande les dimensions de la fenêtre texte courante.
En somme vous pouvez retrouver les valeurs passées par la routine BB66.
CA: Aucune.
CF : Si la fenêtre couvre tout l'écran, CARRY = 0 sinon CARRY = 1.
H = Colonne à gauche.
D = Colonne à droite.
L = Rangée en haut.
E = Rangée en bas.

BB6C: Efface le contenu de la fenêtre active et place le curseur texte en position haut et gauche de cette dernière.
Cest le CLS du Basic.
CA : Aucune.
CF: Tous les registres sont modifies.

 

 

  

  Voir cet article au format PDF Imprimer cet article

RECHERCHE
LANGUE
* Donathon 2017 *

145 €

 

 

 

 En savoir plus

Le Chat
 Smiles  Loading...
EN LIGNE
20 Personne(s) en ligne (1 Personne(s) connectée(s) sur Les articles Amstrad)

Utilisateur(s): 8
Invité(s): 12

Moonbeam, PacoRabanne, Jerres12, boissetar, khomenor, Golem13, BDCIRON, rity, Plus ...
Musiques CPC

Lecteur MP3
CPC-Scene Radio

 

 

ROLAND RADIO

Connexion
Identifiant :

Mot de passe :

Se souvenir de moi



Mot de passe perdu ?

Inscrivez-vous !

 

Informations
________________________________

Suivre Amstrad.eu

________________________________

Autres Créations web

________________________________

 

Declaration CNIL : 1005884

Association : 0540200002843

Charte

Avertissements

Plan du site

Carte de France des membres

 

 

 

Facebook.

Twitter.

RSS forum.

RSS News.

Contact.

 

Gaston-Phoebus.com

Amstrad.eu

untour.fr

Cathydeco.com

Higoogle

Harloup.fr

** Faire un don **

 

Conception Phenix © 2000 - 2014