Je vous ai compris ! Vous n'avez rien à faire des compacteurs. Vous voulez du concret. Suite à l'épuisement des livres spécialises, il parait qu'une liste des vecteurs système ferait le bonheur de milliers de lecteurs. Or donc, la voici. Nous allons, dans cette liste, aborder les vecteurs gérant le clavier, les modes textes, l'écran, le graphisme, les sons et les accès disque (clavier, mode et sons pour ce numéro). Nous vous indiquerons dans un premier temps l'adresse d'appel du vecteur suivi d'un petit commentaire sur la fonction réalisée ainsi que les conditions d'appel (initialisation de certains registres) et les conditions finales (l'état des registres et les flags). L'état en sortie des registres vous permet de strocker prealablement ces derniers a l'aide de l'instruction PUSH pour ne pas perdre une valeur placee dans le registre avant l'appel de la routine. Il va de soi que cet empilement sera desactive a 'aide de l'instruction POP juste apres l'appel du vecteur. A vous de faire votre choix tout en sachant que cette liste n' est pas exhaustive mais qu'elle renferme l'essentiel des vecteurs utilisables en assembleur. LE CLAVIER BB00 : Initialise le clavier, les predefinitions (KEY, KEYDEF), le tampon clavier (CLEAR INPUT sur 6128), etc. - CA :
- CF :
- Les registres AF,BC,DE et HL sont modifies.
BB06 : Attente d'une touche du clavier et renvoie son code dans l'accu (voir également BB18) - CA :
- CF :
- L'accumulateur = numéro du caractere (exemple : 66 pour la touche B du clavier).
BB09: Teste si une touche est enfoncee. Cette routine n'attend pas et doit etre placee dans une boucle d'attente. - CA :
- CF :
- Si une touche est pressee,
- CARRY = 1 et Accumulateur = numéro du caractere,
- sinon CARRY=0 et l'accumulateur est modifie.
BB18 : Attente d'une touche du clavier. Cette routine se differencie de BB06 par le fait qu'elle renvoie pour quelques touches un code different de BB06. Entre autres, les touches du pave numerique. 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 redefinition d'une touche). La difference est vraie avec 139 pour ENTER (au lieu de 13 avec BB18) et 138 pour Ie "." du pave numerique (au lieu de 46 avec BB18). - CA :
- CF :
- L'accumulateur = numéro du caractere.
BB1B : Teste si une touche est enfoncée. Cette routine n' attend pas et doit être placee dans une boucle d'attente. Cette routine se differencie de BB09 par le fait qu'elle renvoie le numéro de la touche correspondant aux indications gravees sur le boitier de votre CPC 6128 (exemple pour un clavier Azerty, la touche A correspond a 67). - CA :
- CF :
- Si une touche est pressee,
- CARRY = 1 et Accumulateur = numéro du caractere,
- sinon CARRY=0 et l'accumulateur est modifie.
BB21 : Demande l'etat de la touche CAPS LOCK et SHIFT. - CA :
- CF:
- L contient l'etat de la touche CAPS
- H celui de SHIFT.
- Notons qu'une valeur 0 signifie une touche non enclenchée et 255 une touche pressee.
BB24 : Teste l'état du joystick. Pour connaitre la position d'un manche a balai, il faudra tester les 6 premiers bits de l'accumulateur (exemple BIT 1,A, JR Z,...). - CA :
- CF :
- A et H contiennent l'etat du premier joystick et L l'état du second.
- Les bits 0 a 5 de ces registres se placeront a 1 si les directions suivantes sont respectees : 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 repetition du clavier (SPEED KEY du Basic). - CA :
- H = temps avant la premiere repetition,
- L = La vitesse de repetition.
- Ces vitesses sont indiquees en cinquantieme de seconde (LD H,50 pour une seconde).
- CF :
BB48 : Desactive la touche ESC. Sous Basic cet appel sera utilise de la façon suivante : 10 CALL &BB48 20 GOTO 20 LE MODE TEXTE BB5A : Affiche un caractere ASCII à la position courante du curseur texte (LOCATE). C'est en somme l'équivalent de PRINT mais pour un seul caractere. Sachez que pour afficher une phrase, il faudra écrire une routine de lecteur qui affichera les caracteres un par un. Contrairement au Basic, cette routine n' execute pas de retour chariot ce qui evite de replacer le curseur pour le caractere suivant. Exemple Basic PRINT "A"; - CA :
- L'accumulateur contient le code ASCII du caractere à afficher (exemple : 65 pour A).
- CF :
BB60 : Lit un caractere a la position courante du curseur texte. Equivalent Basic de COPYCHR$. - CA :
- CF :
- Si la routine reconnait un caractere,
- CARRY = 1 (JR C,..) et l'accumulateur-contient le code ASCII de ce caractere,
- sinon CARRY = 0 et A = 0.
BB66 : Fixe les limites d'une fenetre texte (WINDOW du Basic). Il est evident que cette commande reagira exactement comme le Basic. Pour travailler sur plusieurs fenetres en me 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ôtde la fenêtre (gauche ou droit).
- L = Le troisieme cote de la fenêtre (haut ou bas).
- E = Le dernier cote de la fenetre (bas ou haut).
- CF :
- Les registres A,F,H,L,B,C,D et E sont modifies.
BB69 : Demande les dimensions de la fenetre texte courante. En somme vous pouvez retrouver les valeurs passees par la routine BB66. - CA: Aucune.
- CF : Si la fenetre couvre tout l'ecran, 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 fenetre active et place le curseur texte en position haut et gauche de cette derniere. Cest le CLS du Basic. - CA :
- CF:
- Tous les registres sont modifies.
BB6F : Déplace la position du curseur texte horizontalement. - CA :
- L'accumulateur = nouvelle position de la colonne.
- CF :
BB72 : Déplace la position du curseur texte verticalement. - CA :
- L'accumulateur = nouvelle position de la rangée.
- CF :
BB75 : Déplace la position du curseur texte (LOCATE du Basic). - CA :
- H = Position de la colonne (X).
- L = Position de la rangée (Y).
- CF :
BB78 : Demande la position courante du curseur texte. Cette routine vous indiquera en sortie le nombre de rotation (scrolling) effectues sur cette fenetre. Ce compteur est incremente si la rotation se fait vers le bas et decremente si la rotation se fait vers le haut. - CA:
- CF :
- H = Position de la colonne (X).
- L = Position de la rangee (Y).
- A = nombre de rotations.
BB90 : Determine le stylo utilise pour l'ecriture texte (l'instruction PEN de notre cher Basic) BB93 : Demande le numéro du stylo utilise pour l'ecriture texte. - CA :
- CF :
- A = Numéro du stylo utilise.
BB96: Determine le stylo utilise pour le fond des caracteres texte (l'instruction PAPER du Basic) BB99 : Demande le numéro du stylo utilise pour le fond des caracteres. - CA :
- CF :
- A = Numéro du stylo utilise.
BB9C : Echange les encres du stylo et du fond. Sous Basic, vous pouvez appeler cette routine pour une inversion video ou utiliser l'instruction, PRINT CHR$(24) BB9F: Place le mode d'ecriture opaque ou transparent pour le fond des caracteres affichables. - CA:
- A = 0 pour fond opaque.
- A<>0 pour fond transparent.
- CF :
BBA8 : Redéfinit la matrice des caracteres ASCII affichables (au-dessus de 31). L'equivalent Basic est la commande SYMBOL. Vous pensez bien qu'en travaillant en assembleur, vous n'aurez plus it reserver de place en memoire avec l'instruction SYMBOL AFTER. - CA :
- A = numéro du caractere à redéfinir.
- HL pointe sur la matrice (8 octets)
- CF :
- Si le caractère est défini CARRY = 1 sinon CARRY = 0.
Tous les registres sont modifies Exemple pour l'utilisation de ce vecteur: LD A,240 LD HL,ASCII JP &BBA8 ASCII DEFB 1,2,3.4.5,6,7,8LES SONS BCA7 : Initialise le gestionnaire sonore. Ce vecteur coupe tous les sons joues ou en attente et reinitialise les differentes enveloppes (volume, frequence). - CA :
- CF :
- Les registres AF,HL,BC et DE sont modifies.
BCAA: Place un son sur le canal demande (l'instruction SOUND du Basic) - CA :
- HL pointe sur une table de donnees sonores de 9 octets qui doit se trouver dans la zone Ram entre &4000 et &C000.
- CF :
- Si le canal n'est pas sature (cinq sons en attente) le son est place sur le canal et CARRY = 1, HL est modifie sinon, CARRY = 0.
- En tout cas, les registres AF, BC, DE et IX sont modifies.
- La table des donnees n'est pas organisee comme la commande SOUND du Basic. Voici l'ordre de placement des parametres:
ORG 40000 LD HL,SONS JP &BCAA SONS DEFB 1 ;CANAL DEFB 2 ;ENVELOPPE DE VOLUME DEFB 3 ;ENVELOPPE DE TON DEFW 1000 ;FREOUENCE DEFB 31 ;BRUIT DEFB 15 ;VOLUME DEFW 300 ;DUREECet exemple equivaut à la commande SOUND 1,1000,300,15,2,3,31. Vous constatez que la frequence tout comme la durée du son sont placées sur deux octets. Notez enfin que les valeurs négatives remplissent les mêmes roles qu'en Basic . BCAD : Teste l'etat des canaux sonores (l'instruction SQ du Basic). La valeur d'entree pour les trois canaux sonores sont 1 pour le canal A, 2 pour le canal B et 4 pour le canal C. Le mélange des canaux n'est pas realisable par ce vecteur. - CA :
- A = Numéro du canal à tester.
- CF :
- A = l'état du canal.
- Les registre F, BC, DE et HL sont modifies.
BCB6 : Arrete momentanement tous les sons. - CA:
- CF :
- Les registres AF, BC et HL sont modifies.
BCB9 : Libere les sons arretes avec la routine BCB6. - CA :
- Aucune (si ce n'est l'utilisation de la routine precedente).
- CF :
- Les registres AF, BC, DE et IX sont modifies.
BCBC : Création d'une enveloppe de volume (ENV). - CA :
- A = numéro de l'enveloppe (1 à 15).
- HL pointe sur les donnees de l'enveloppe (15 octets).
- CF :
- HL est augmente de 16, AF, HL et BC sont modifies.
BCBF : Creation d'une enveloppe de frequence (ENT). - CA :
- A = numéro de l'enveloppe (1 à 15).
- HL pointe sur les données de l'enveloppe (15 octets).
- CF:
- HL est augmente de 16, AF, HL et BC sont modifies.
BCC2 : Donne l'adresse des données d'une enveloppe de volume. - CA :
- A = numéro de l'enveloppe (1 à 15).
- CF :
- Si OK, CARRY = 1,
- HL pointe sur les donnees
- BC = la longueur de l'enveloppe.
- Les registres F et DE sont modifies.
BCC5: Donne l'adresse des données d'une enveloppe de frequence. - CA :
- A = numéro de l'enveloppe (1 à 15).
- CF :
- Si OK, CARRY = 1,
- HL pointe sur les donnees
- BC = la longueur de l'enveloppe.
- Les registres F et DE sont modifies.
Nous verrons, des le prochain numéro, la suite des vecteurs utilises pour les accès disque, le mode graphique sans oublier le gestionnaire écran. Sined le vecteur, ACPC n°43, avr/mai 92, p42-43 ★ AMSTRAD CPC ★ DOWNLOAD ★ |
|
CPCrulez[Content Management System] v8.7-desktop/c Page créée en 298 millisecondes et consultée 4522 foisL'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. |
|
|