CODINGCLASSEURS WEKA ★ Comment exploiter toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★

4/2.9 - Les RSX (11e Complément)Coding Classeurs Weka
4/2 - Assembleur Z80 : Définitions et rappels de base

4/2.9 Les RSX

Les RSX (Resident System extension), en d'autres termes Extensions résidentes dans le système permettent d'augmenter le nombre d'instructions du langage Basic. Les instructions classiques du Basic (PRINT, INPUT, GOTO, etc.) sont dites internes. Lorsqu'une instruction interne est rencontrée par l'interpréteur Basic pendant l'exécution d'un programme, il parcourt la table des instructions. Si cette instruction s'y trouve, l'interpréteur donne le contrôle à une adresse bien précise en mémoire (qui dépend bien évidemment de l'instruction). Si elle ne se trouve pas dans la table, une erreur est générée.

Les RSX (aussi appelées commandes externes) sont représentées par un mot clé précédé d'une barre verticale (! de code ASCII 124). Cette barre est obtenue sur le clavier en appuyant simultanément sur les touches Shift et Arrobas. Lorsqu'une instruction externe est rencontrée par l'interpréteur Basic pendant l'exécution d'un programme, il parcourt une partie de la mémoire RAM pour localiser son adresse de traitement. Le message « UNKNOW COMMAND » est affiché si la RSX n'a pas été définie.

Pour définir une RSX, vous devez procéder selon les trois étapes suivantes :

  • déclaration de la RSX ;
  • définition de la syntaxe de la RSX ;
  • définition du programme de traitement de la RSX, en Assembleur.

Déclaration d'une RSX

Pour déclarer une RSX, vous devez utiliser la macro KL LOG EXT du firmware (adresse &BCD1 ).

Cette macro demande l'initialisation de deux registres en entrée (Partie 4, Chap. 2.7, p. 54) :

  • BC pointe sur l'adresse de la table de commande liée à la RSX (en RAM),
  • HL contient l'adresse d'un buffer de 4 octets en RAM.

Dans cette courte introduction, nous allons définir une RSX dont le but sera triple :

  • effacement d'écran et positionnement dans un mode donné (0, 1 ou 2) ;
  • choix de la couleur de fond (encre 0) ;
  • choix de la couleur d'affichage (encre 1).

Nous allons donner le nom « CLC » à cette RSX. Sa déclaration se fera à l'aide des instructions Assembleur suivantes :

Définition de la syntaxe de la RSX

La syntaxe de la RSX est définie dans une table. Chaque dernière lettre des mots de la table a son bit 7 à 1. Le dernier mot de la table est suivi d'un octet nul.

Dans notre exemple, la table aura la présentation suivante :

TABLE : EQU $
DB "CL"
DB "C" + 80H
DB 0

Définition du programme de traitement de la RSX

Un ou plusieurs paramètres peuvent être passés à une RSX, par l'intermédiaire des registres A et IX.

Le registre A contient le nombre de paramètres passés et le registre IX pointe sur le dernier paramètre.

Le codage du paramètre dépend de son type :

  • un paramètre entier est codé sur deux octets en binaire signé ;
  • un paramètre réel est codé sur deux octets qui représentent sa conversion en un entier non signé ;
  • un paramètre chaîne contient l'adresse du descripteur de la chaîne ;
  • un paramètre variable contient la valeur de la variable (pour un entier ou un réel) ou l'adresse du descripteur associé (pour une variable chaîne).

Dans notre exemple, les paramètres passés sont au nombre de trois :

  • le mode d'affichage ;
  • la couleur de fond ;
  • la couleur d'écriture.

Supposons que ces paramètres aient les valeurs suivantes : 2, 3, 1.

A l'entrée dans la routine de traitement de la RSX, le registre A aura la valeur 3 (3 paramètres passés), et le registre IX pointera dans une zone mémoire dont le contenu sera le suivant :

IX 02
IX+1 00
IX+ 2 03
IX + 3 00
IX + 4 01
IX + 5 00



Le programme complet de définition et de traitement de la RSX est le suivant :

  • Lignes 9 à 17 : Définition des constantes et variables du programme.
  • Lignes 19 à 27 : Définition de la RSX.
  • Lignes 35 et 35 : Lecture et définition du mode.
  • Lignes 36 à 40 : Lecture et définition de la couleur 1.
  • Lignes 41 à 45 : Lecture et définition de la couleur de fond.

Comme toujours, voici la version « chargeur Basic » du programme Assembleur :

Les codes de checksum correspondants sont les suivants :

13 2F F1 C9

Pour faire fonctionner ce programme, définissez la RSX en tapant CALL &900D sous Basic. Activez la RSX en tapant, par exemple :

|CLC,0,0,1 — Mode 0, fond noir, encre bleue.
|CLC, 1,2,1 — Mode 1, fond bleu, encre bleu vif.
|CLC,2,10,24 — Mode 2, fond turquoise, encre jaune vif.

Page précédente : 4/2.8 - Les instructions RESTART des CPC
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 540 millisecondes et consultée 281 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.