CODING ★ COMMENT CONTRUIRE UNE RSX (CPC REVUE) ★

Comment Contruire une RSX (CPC Revue)
La puissance du Basic de l'AMSTRAD ne se limite pas aux seules instructions de son interpréteur ; les concepteurs sont allés beaucoup plus loin et permettent à l'utilisateur d'étendre, à souhait, le jeu d'instructions reconnues par la machine. Ce vocabulaire complémentaire, compris par l'interpréteur est défini au moyen des RSX.

RSX... Derrière ces trois lettres mystérieuses se cache l'abréviation de Résident System extension. Ces routines, que le programmeur expérimenté écrira en langage machine, auraient pu être simplement appelées par un CALL suivi de leur adresse... Plus confortable, le Basic de l'AMSTRAD permet de les invoquer directement par leur nom. Seule condition : ce nom doit être précédé du symbole I, obtenu en pressant simultanément les touches SHIFT et Arobas. Le but de cet article est de vous apprendre la procédure qui permet d'écrire une instruction RSX.

Pour découvrir la "recette", il suffit de lire le manuel du "Firmware" connu chez AMSTRAD sous la référence "Soft 158". Pour tous ceux qui ne possèdent pas ce document quasi indispensable, CPC explique succinctement le mécanisme qui permet d'écrire une RSX. La RSX n'est pas obligatoirement une instruction simple... Elle peut être suivie de paramètres comme, par exemple, celle décrite par Eddy DUTERTRE dans CPC n° 3, permettant de tracer un cercle dont on définit les coordonnées du centre et le rayon. La forme était CIRCLE x,y,r. Nous allons voir comment passer ces paramètres.

L'exemple retenu en illustration est une instruction qui fait cruellement défaut sur l'AMSTRAD : celle qui permettrait d'éditer le catalogue d'une disquette sur imprimante. Nous l'avons baptisée PRTCAT (PRinT CATalogue). Le résultat a été obtenu très simplement, en modifiant deux des indirections du système, détournant la sortie écran vers imprimante. Pour fignoler, et surtout pour donner un exemple du passage de paramètres, nous avons ajouté à notre RSX la possibilité d'éditer ce catalogue en 1, 2 ou 4 colonnes sur l'imprimante. L'astuce retenue fait simplement appel à une sélection automatique du mode d'écran... Ainsi :

PRTCAT,0 édite le catalogue en 1 col. PRTCAT, 1 édite le catalogue en 2 col. PRTCAT.2 édite le catalogue en 4 col. ? Pour reconnaître une RSX, le système a besoin des conditions suivantes :

  • Réservation d'une table contenant les codes ASCII formant l'instruction. Le dernier caractère du "mot" devra nécessairement avoir son bit 7 à 1.
  • Comme plusieurs instructions peuvent être présentes dans la table, la fin de celle-ci est signalée par un 0.
  • Une zone mémoire de 4 octets doit être réservée pour le système (Kernal)
  • Cette instruction devra être présentée au système pour qu'il la reconnaisse par la suite ; c'est le rôle de la routine KL LOG EXT, accessible par le JUMP BLOCK.

Lors de l'appel de l'instruction, on pourra vérifier que le nombre de paramètres transmis est correct ; ici 1. Si ce nom bre est incorrect, on n'exécutera pas la RSX ou on sortira un message d'erreur pour informer l'utilisateur... Ici, cette solution n'a pas été retenue. L'accumulateur (A) contient ce nombre de paramètres alors que le registre IX pointe sur le dernier. Ici, il n'y a qu'un seul paramètre. Pour décoder ce paramètre, on utilise donc le pointeur IX. Ici, IX + 0 donnera la valeur 0, 1 ou 2 qui doit suivre PRTCAT. Ici, il est inutile de tester la validité du paramètre car ceci est fait automatiquement par la routine système SETMODE établissant le mode écran. Par contre, cela pourrait parfois être indispensable Après avoir recueilli ce ou ces paramètrels), on exécute la routine d'extension à proprement parler. Notre routine est simple : elle force le mode écran selon la valeur passée par le paramètre suivant PRTCAT. Elle teste la touche "ESC" pour pouvoir "Breaker" au cas où l'imprimante ne serait pas sous tension. Elle détourne ensuite la partie écran vers l'imprimante. Elle appelle la routine système CAT après avoir indiqué une zone mémoire buffer provisoire de 2 Ko où sera rangé le catalogue (ici, en &8000 mais cette valeur pourrait être modifiée!. Pour finir, elle rétablit les indirections initiales pour que, par la suite, l'écran soit à nouveau validé. Le lecteur qui ne possède pas d'assembleur pourra taper le programme Basic, contenant dans ses lignes DATA le code machine correspondant à la RSX. Après avoir fait RUN, il suffira de faire un CALL &A000, afin d'initialiser une fois pour toutes la RSX qui sera, par la suite, appelée par |PRTCAT,n où n prendra les valeurs 0, 1 ou 2. Il est possible de sauvegarder le forme binaire de l'extension par SAVE "PRTCAT",b,&A000,&42. Après l'avoir chargée par LOAD, il faudra la lancer par CALL &A000 pour l'initialiser...

Au moyen de cet exemple simple, nous espérons avoir prouvé au lecteur qu'il est relativement simple de rendre son AMSTRAD encore plus performant...

CPC n°14

★ ANNÉE: ???
★ AUTEUR: Denis BONOMO

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

Lien(s):
» Coding » Rsx - Anatomy Of An Rsx - Part 1 (Amstrad Action)
» Coding » Bidouilles ACPC n°30 - Catalogue et heresie
» Coding » Benutzeroberflaeche CEUS v1.0 - Teil 2: Der Window-Manager (I) (CPC Amstrad International)
» Coding » Assembleur ACPC n°19 - Création d'RSX
» Coding » Benutzeroberflaeche CEUS v1.0 - Teil 6: Utilities (CPC Amstrad International)
» Coding » Bidouilles ACPC n°12 - Création de RSX
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 025 millisecondes et consultée 1744 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.