Je m'explique : Quelque soit le langage de programmation employé , votre programme se trouve toujours dans la RAM alors que le système d'exploitation qui gère le CPC est dans la ROM . Lorsque vous avez besoin d'afficher un caractère , d'accéder au drive , ou d'accomplir toute autre action , les routines qui permettent ceci sont en ROM et la table des vecteurs est le moyen le plus commode d'accéder à la routine appropriée . Par exemple , lorsque vous faites en basic : CALL &BB06 , ce vecteur commute la ROM , exécute la routine ROM qui attend l'appui sur une touche et lorsque la touche à été enfoncée revient dans la RAM et le programme reprend son cours .
Un autre exemple : POKE &BB5A,&C9 . Un code RETour est mis dans le 1er octet du vecteur qui ne peut donc plus activer la ROM . Après cette instruction , vous constaterez que la commande PRINT est totalement inopérante .
Plus de détails : Les routines ROM peuvent aussi être commutées par d'autres moyens mais il faut connaître l'adresse exacte de la routine et celle ci-diffère selon le type de CPC (464 - 664 - 6128) alors que la position en RAM des vecteurs est la même sur tous les CPC . En revanche , le contenu de ces vecteurs diffère et si l'on veut les modifier comme précédement , puis les restaurer , il faudra préserver le contenu originel pour le restituer par la suite . Exemple :
Paramètres des routines : La plupart des vecteurs ont besoin de valeurs données pour fonctionner . Par exemple #BB75 qui correspond à LOCATE à besoin de savoir ou l'on veut mettre le curseur , dans ce cas on dit que la routine à besoin de PARAMETRES D'ENTREE . D'autres routines fournissent des informations après exécution , ce sont les PARAMETRES DE SORTIE . Ces paramètres sont transmis et reçus par le biais des registres du Z80 , ces registres sont donc modifiés par la routine et il convient de les préserver si leur contenu originel doit être réutilisé en sortie . Certaines routines modifient des registres sans prévenir , la même règle devra alors être appliquée .
Dans cette première description , se trouvent de nombreux 'blancs', pour commencer , je ne décrirai que les routines les plus usuelles , dans le numéro suivant , vous aurez droit aux routines moins courantes et dans le dernier numéro de l'année vous pourrez étudier les routines que l'on utilise pour ainsi dire jamais . La description est classée par nature d'usage (Texte , Graphisme , Etc ...) et suit toujours la forme suivante . Adresse routine en ROM est l'adresse ROM activée par le vecteur décrit .
En fin de chapitre , quelques exemples d'usage des vecteurs vous seront proposés .
----------------------ADRESSE : &BB1E Equivalent Basic : INKEY (n)
EFFET : Teste si la touche dont le numéro est donné dans A est pressée . Il ne s'agit pas ici d'un code ASCII mais du numéro physique de la touche . La liste de ces numéros figure dans le manuel de votre CPC .
PARAMETRES D'ENTREE : A=Numéro de touche
PARAMETRES DE SORTIE : A=0 Si la touche à été pressée , <> de 0 sinon . Le registre C informe si CTRL ou SHIFT étaient pressés simultanément . Si CTRL est pressé , le bit 7 de C est mis , si SHIFT est pressé , le bit 5 de C est mis .
REGISTRES MODIFIES : AF , HL , BC
ETAT DES FLAGS EN SORTIE : Z mis si touche pressée , NZ Sinon .
ADRESSE ROUTINE EN ROM CPC 464 : &1CBD - 664 - 6128 : &1E45
ADRESSE : &BB24 Equivalent Basic : JOY (n)
EFFET : Teste l'état du joystick .
PARAMETRES D'ENTREE : Rien .
PARAMETRES DE SORTIE : A=JOY(0) , H=JOY(0) , L=JOY(1)
REGISTRES MODIFIES : AF , HL
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &1BB3 - 664 - 6128 : &1D83
Voici quels bits seront mis dans A , H , L selon la commande joystyck donnée . Si plusieurs actions sont effectuées simultanément , plusieurs bits de ces registres seront mis en sortie . Si le registre revient avec 0 comme contenu , le joystick n'a pas bougé .
Bit 0 mis = HAUT . Bit 1 mis = BAS . Bit 2 mis = GAUCHE Bit 3 mis = DROITE
Bit 4 mis = FIRE . Ex : A=%00011001 = Diagonal haut , droite et fire .
--------------------------
ADRESSE : &BB3F Equivalent Basic : SPEED KEY a,b
EFFET : Modifie la vitesse de réaction et de répétition des touches comme en basic .
PARAMETRES D'ENTREE : H=a , L=b .
PARAMETRES DE SORTIE : Rien .
REGISTRES MODIFIES : AF
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &1CA6 - 664 - 6128 : &1EF2
--------------------------
ADRESSE : &BB48 Equivalent Basic : Rien .
EFFET : Annule l'effet de la touche BREAK .
PARAMETRES D'ENTREE : Rien .
PARAMETRES DE SORTIE : Rien .
REGISTRES MODIFIES : AF , HL
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &1C82 - 664 - 6128 : &1E0B
-------------
— ECRAN TEXTE -
-------------
ADRESSE : &BB5A Equivalent Basic : PRINT
EFFET : Affiche un caractère ou exécute un code de contrôle inférieur à 32 .
PARAMETRES D'ENTREE : A=Caractère .
PARAMETRES DE SORTIE : Rien .
REGISTRES MODIFIES : AF
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &1400 - 664 : &13FA - 6128 : &13FE
ADRESSE : &B5DD Equivalent Basic : PRINT CHRS(1),....
EFFET : Comme la précédente mais affiche la représentation graphique des codes de contrôle au lieu de les exécuter .
PARAMETRES D'ENTREE : A=Caractère .
PARAMETRES DE SORTIE : Rien .
REGISTRES MODIFIES : AF , BC , DE , HL .
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &1334- 664 : &1331 - 6128 : &1335
--------------------------
ADRESSE : &BB66 Equivalent Basic : WINDOW 0,x1,y1,x2,y2
EFFET : Détermine les coordonnées de la fenêtre 0 . La ligne la plus haute est donnée dans L , la plus basse dans E . La colonne de gauche dans H et celle de droite dans L .
PARAMETRES D'ENTREE : HL , Coin en haut à gauche , DE = Coin en bas à droite .
PARAMETRES DE SORTIE : Rien .
REGISTRES MODIFIES : AF , HL , DE , BC
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &120C- 664 : &1204 - 6128 : &1208
ADRESSE : &BB69 Equivalent Basic : Rien .
EFFET : Informe sur les dimensions de la fenêtre canal 0 .
PARAMETRES D'ENTREE : Rien .
PARAMETRES DE SORTIE : HL = Coin en haut à gauche , DE = Coin en bas à droite .
REGISTRES MODIFIES : AF , HL , DE , BC
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &1256 - 664 : &124E - 6128 : &1252
ADRESSE : &BB6C Equivalent Basic : CLS #0
EFFET : Efface l'écran .
PARAMETRES D'ENTREE : Rien .
PARAMETRES DE SORTIE : Rien .
REGISTRES MODIFIES : AF , HL , DE ,BC
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &1540 - 664 : &154B - 6128 : &154F
--------------------------
ADRESSE : &BB75 Equivalent Basic : LOCATE x,y
EFFET : Place le curseur texte aux coordonnées x,y
PARAMETRES D'ENTREE : H=Colonne , L=Ligne .
PARAMETRES DE SORTIE : Rien .
REGISTRES MODIFIES : AF , HL
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &1174 - 664 : &116C - 6128 : &1170
ADRESSE : &BB79 Equivalent Basic : Rien .
EFFET : Donne dans HL les coordonnées du curseur texte .
PARAMETRES D'ENTREE : Rien .
PARAMETRES DE SORTIE : H=colonne , L=Ligne , A=Compteur de défilement . Le compteur de défilement compte le nombre de lignes texte décalées si un scrolling vertical à déplacé l'écran .
REGISTRES MODIFIES : AF , HL
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &1180 - 664 : &1178 - 6128 : &117C
--------------------------
ADRESSE : &BB90 Equivalent Basic : PEN , n
EFFET : Change la selection du stylo texte .
PARAMETRES D'ENTREE : A=Numéro PEN .
PARAMETRES DE SORTIE : Rien .
REGISTRES MODIFIES : AF , HL
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &12A9 - 664 : &12A2 - 6128 : &12A6
ADRESSE : &BB93 Equivalent Basic : Rien .
EFFET : Renvoie dans A le numéro du stylo en cours .
PARAMETRES D'ENTREE : Rien .
PARAMETRES DE SORTIE : A=Numéro de stylo .
REGISTRES MODIFIES : AF , HL .
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &12BD - 664 : &12B6 - 6128 : &12BA
ADRESSE : &BB96 Equivalent Basic : PAPER , n
EFFET : Change la sélection du fond d'écran .
PARAMETRES D'ENTREE : A=Numéro PAPER .
PARAMETRES DE SORTIE : Rien .
REGISTRES MODIFIES : AF , HL .
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &12AE - 664 : &12A7 - 6128 : &12AB
ADRESSE : &BB99 Equivalent Basic : Rien
EFFET : Renvoie dans A le numéro de papier en cours .
PARAMETRES D'ENTREE : Rien .
PARAMETRES DE SORTIE : A=Numéro de papier .
REGISTRES MODIFIES : AF , HL
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &12C3 - 664 : &12BC - 6128 : &12C0
ADRESSE : &BB9C Equivalent Basic : PRINT CHR$(24)
EFFET : Inverse les couleurs de PEN et PAPER .
PARAMETRES D'ENTREE : Rien .
PARAMETRES DE SORTIE : Rien .
REGISTRES MODIFIES : AF , HL
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &12C9 - 664 : &12C2 - 6128 : &12C6
---------------------
— ROUTINES GRAPHIQUES -
---------------------
ADRESSE : &BBC0 Equivalent Basic : MOVE x,y
EFFET : Déplace le curseur graphique .
PARAMETRES D'ENTREE : DE=x HL=x
PARAMETRES DE SORTIE : Rien .
REGISTRES MODIFIES : AF , BC , DE ,HL
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &15F4 - 664 : &15FA - 6128 : &15FE
ADRESSE : &BBC3 Equivalent Basic : MOVER x,y
EFFET : Comme &BBC0 .
PARAMETRES D'ENTREE : Comme &BBC0 .
PARAMETRES DE SORTIE : Comme &BBC0 .
REGISTRES MODIFIES : Comme &BBC0 .
ETAT DES FLAGS EN SORTIE : Comme &BBC0 .
ADRESSE ROUTINE EN ROM CPC 464 : &15F1 - 664 : &15F7 - 6128 : &15FB
ADRESSE : &BBC6 Equivalent Basic : Rien .
EFFET : Informe sur la position du curseur graphique .
PARAMETRES D'ENTREE : Rien .
PARAMETRES DE SORTIE : DE=x , HL=y
REGISTRES MODIFIES : AF , BC , DE , HL
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &15FC - 664 : &1602 - 6128 : &1606
ADRESSE : &BBC9 Equivalent Basic : ORIGIN x,y
EFFET : Modifie l'origine de l'écran .
PARAMETRES D'ENTREE : DE=x , HL=y
PARAMETRES DE SORTIE : Rien .
REGISTRES MODIFIES : AF , BC , DE ,HL
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &1604 - 664 : &160A - 6128 : &160E
ADRESSE : &BBCC Equivalent Basic : Rien .
EFFET : Informe sur l'origine de l'écran .
PARAMETRES D'ENTREE : Rien .
PARAMETRES DE SORTIE : DE=x , HL=y
REGISTRES MODIFIES : AF , BC ,DE, HL
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &1612 - 664 : &1618 - 6128 : &161C
--------------------------
ADRESSE : &BBDE Equivalent Basic : GRAPHICS PEN n (6128 seulement)
EFFET : Détermine le numéro de stylo graphique .
PARAMETRES D'ENTREE : A=Numéro de stylo .
PARAMETRES DE SORTIE : Rien .
REGISTRES MODIFIES : AF
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &17F6 - 664 : &1763 - 6128 : &1767
ADRESSE : &BBE1 Equivalent Basic : Rien .
EFFET : Informe sur le numéro de stylo graphique en cours .
PARAMETRES D'ENTREE : Rien .
PARAMETRES DE SORTIE : A=Numéro de stylo .
REGISTRES MODIFIES : AF
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &1804 - 664 : &1771 - 6128 : &1775
ADRESSE : &BBE4 Equivalent Basic : GRAPHICS PAPER n (6128 seulement)
EFFET : Fixe la couleur de fond de l'écran graphique .
PARAMETRES D'ENTREE : A=Numero stylo graphique .
PARAMETRES DE SORTIE : Rien .
REGISTRES MODIFIES : AF
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &17FD - 664 : &176A - 6128 : &176E
ADRESSE : &BBE7 Equivalent Basic : Rien .
EFFET : Informe sur la couleur graphique du fond .
PARAMETRES D'ENTREE : Rien .
PARAMETRES DE SORTIE : A=PAPER Graphique .
REGISTRES MODIFIES : AF
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &180A - 664 : &1776 - 6128 : &177A
ADRESSE : &BBEA Equivalent Basic : PLOT x,y
EFFET : Affiche un point aux coordonnées x,y .
PARAMETRES D'ENTREE : DE=x , HL=y
PARAMETRES DE SORTIE : Rien .
REGISTRES MODIFIES : AF , BC , DE , HL
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &1813 - 664 : &177F - 6128 : &1783
ADRESSE : &BBED Equivalent Basic : PLOTR x,y
EFFET : Comme &BBEA
PARAMETRES D'ENTREE : Comme &BBEA
PARAMETRES DE SORTIE : Comme &BBEA
REGISTRES MODIFIES : Comme &BBEA
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &1810 - 664 : &177C - 6128 : &1780
--------------------------
ADRESSE : &BBF6 Equivalent Basic : DRAW x,y
EFFET : Trace une ligne depuis la position du curseur graphique jusqu'au point x,y .
PARAMETRES D'ENTREE : DE=x , HL=y
PARAMETRES DE SORTIE : Rien .
REGISTRES MODIFIES : AF , BC ,DE , HL
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &1839 - 664 : &17A5 - 6128 : &17A9
ADRESSE : &BBF9 Equivalent Basic : DRAWR x,y
EFFET : Comme &BBF6
PARAMETRES D'ENTREE : Comme &BBF6
PARAMETRES DE SORTIE : Comme &BBF6
REGISTRES MODIFIES : Comme &BBF6
ETAT DES FLAGS EN SORTIE : Comme &BBF6
ADRESSE ROUTINE EN ROM CPC 464 : &1836 - 664 : &17A2 - 6128 : &17A6
----------------
— ROUTINES ECRAN -
----------------
ADRESSE : &BC0E Equivalent Basic : MODE
EFFET : Change le mode écran .
PARAMETRES D'ENTREE : A=Mode .
PARAMETRES DE SORTIE : Rien .
REGISTRES MODIFIES : AF , BC , DE ,HL
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &ACAH - 664 : &AE5H - 6128 : &AE9H
ADRESSE : &BC11 Equivalent Basic : Rien .
EFFET : Renvoie dans A le mode d'écran en cours .
PARAMETRES D'ENTREE : Rien .
PARAMETRES DE SORTIE : A=Mode .
REGISTRES MODIFIES : AF , BC , DE , HL
ETAT DES FLAGS EN SORTIE : Si mode 0 : Carry mis et NZ . Si mode 1 : Carry non mis et Z mis . Si mode 2 : Carry non mis et NZ
ADRESSE ROUTINE EN ROM CPC 464 : &AECH - 664 : &B08H - 6128 : &B0CH
ADRESSE : &BC14 Equivalent Basic : CLS
EFFET : Efface tout l'écran .
PARAMETRES D'ENTREE : Rien .
PARAMETRES DE SORTIE : Rien .
REGISTRES MODIFIES : AF , BC ,DE , HL
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &AF7H - 664 : &B13H - 6128 : &B17H
ADRESSE : &BC32 Equivalent Basic : INK a,b
EFFET : Affecte à un stylo donné les deux couleurs .
PARAMETRES D'ENTREE : A=Stylo , B=Couleur 1 , C=Couleur 2 .
PARAMETRES DE SORTIE : Rien .
REGISTRES MODIFIES : AF , BC , DE ,HL
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &CECH - 664 : &CEEH - 6128 : &CF2H
ADRESSE : &BC35 Equivalent Basic : Rien .
EFFET : Informe sur les encres affectées à un stylo donné .
PARAMETRES D'ENTREE : A=Numéro de stylo .
PARAMETRES DE SORTIE : B=Couleur 1 , C = Couleur 2 .
REGISTRES MODIFIES : AF , BC , DE , HL
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &D14H - 664 : &D16H - 6128 : &D1AH
ADRESSE : &BC38 Equivalent Basic : BORDER a,b
EFFET : Change la couleur du bord .
PARAMETRES D'ENTREE : B=Couleur 1 , C = Couleur 2 .
PARAMETRES DE SORTIE : Rien .
REGISTRES MODIFIES : AF , BC , DE , HL
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &CF1H - 664 : &CF3H - 6128 : &CF7H
ADRESSE : &BC3B Equivalent Basic : Rien .
EFFET : Informe sur la couleur du bord .
PARAMETRES D'ENTREE : Rien .
PARAMETRES DE SORTIE : B=Couleur 1 , C=Couleur 2
REGISTRES MODIFIES : AF , BC , DE , HL
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &D19H - 664 : &D1BH - 6128 : &D1FH
--------------------------
ADRESSE : &BC59 Equivalent Basic : PRINT CHR$(23);CHR$(N)
EFFET : Fixe le mode graphique .
PARAMETRES D'ENTREE : A=0 : Mode normal ; A=1 : Mode XOR ; A=2 : Mode AND ; A=3 : Mode OR
PARAMETRES DE SORTIE : Rien .
REGISTRES MODIFIES : AF , BC ,DE ,HL
ETAT DES FLAGS EN SORTIE : Variable .
ADRESSE ROUTINE EN ROM CPC 464 : &C49H - 664 : &C51H - 6128 : &C55H
--------------------------------------
La série s'arrête ici pour ce numéro . Les vecteurs des périphériques (Imprimante , drive) seront traités dans le prochain numéro . Concernant les vecteurs de l'écran , les cours de graphisme vous donnent des routines destinées à remplacer ceux-ci dont l'usage entraîne une perte de temps considérable . C'est donc au fil des cours de graphisme que vous découvrirez ces vecteurs .
SOS PROGRAMMEURS
| ★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser... |
|