CODING ★ Le directeur Rit ★

Assembleur ACPC n°45 - Le directeur rit ( Modification du catalogue AMSDOS )

De plus en plus vaseux les titres. Il est vrai que de voir un directeur rire est bon signe pour la petite augmentation, mais de là à faire le lien avec le catalogue d'une disquette, faut être un peu fêlé. De toute façon, quand on voit ce qu'on voit et qu'on entend ce qu'on entend, je vous dis qu'on a bien raison de penser ce qu'on pense.

Comme vous avez été nombreux à nous le réclamer, nous allons reparler d'une astuce parue dans un des premiers numéros de Cent Pour Cent. Elle consiste à provoquer l'affichage d'un  texte quelconque lors de la commande CAT. C'était la mode, aux prémices de notre fabuleuse machine, de réaliser des trucs qu'on ne trouvait sur aucun autre micro. Je pense d'ailleurs que  rares sont les machines qui en ont autant vu que le CPC. On lui aura tout fait. Lorsque vous lancez la commande CAT, l'Amsdos se charge simplement de récupérer, dans les secteurs de répertoire de la disquette, les quelques informations qu'il peut afficher. Elles sont les noms, extensions et les tailles des fichiers répartis sur la disquette dans le User courant.
Si les fichiers portent des noms courants, vous obtiendrez ce que nous avons l'habitude de voir: une suite de fichiers suivis de leur taille, ainsi que l'espace disponible sur la disquette en kilo-octets.

En revanche, si vous tripotez les noms de fichiers sur une disquette sans importance, en y fourguant des carac­tères de contrôle, vous vous aperce­vrez que l'affichage n'est plus aussi stricte. Cela peut même semer la ziza­nie sur l'écran. C'est ce principe que nous allons utiliser.

Le CPC, à titre de gestion d"écran, ne dispose pas que de fonctions Basic. Il intègre un gestionnaire qui interprète des caractères spéciaux en tant que commandes de sélections diverses.

Il est ainsi possible, en envoyant une chaîne de caractères subtilement choi­sis, de changer de mode, de stylo, de position sur l'écran, de formater des fenêtres, de passer en vidéo inverse, etc. Ces caractères si spéciaux se nom­ment caractères de contrôle et se situent dans la zone ASCII entre le 0 et le 31. Ils ont chacun un protocole et une action attitrés.
Dans notre cas, le protocole sera le type et le nombre de paramètres à passer selon la commande à réaliser. Il est certain qu'un seul caractère suffira à passer en mode vidéo inverse, alors que la sélection d'un mode vidéo demandera obligatoirement le numéro du mode désiré.

En cela, nous allons avant tout abor­der la liste des commandes dispo­nibles ainsi que le format des para­mètres qu'ils nécessitent. Ne vous inquiétez pas, nous aborderons des exemples concrets juste après.

A FLEUR DES LISTES

  • 00 (&00) : code de contrôle ne faisant rien de rien. Son seul intérêt est de prendre de la place, ce qui peut être utile dans notre cas. Il représente un caractère graphique s'il est utilisé en paramètre du caractère 01.
  • 01 (&01) : si vous désirez qu'un caractère de contrôle ne soit pas interprété, mais simplement imprimé, faites-le préceder de ce code. Il sera ainsi affi­ché comme un code Ascii standard. Attention! un seul caractère suivant 01 sera affiché. Si un caractère de contrôle suit ce paramètre, il sera interprété.
  • 02 (&02) : rend le curseur invisible.
  • 03 (&03) : affiche le curseur.
  • 04 (&04) : sélection de mode. Nous en parlions justement ci-dessus. Cette commande prend un paramètre de 0 à 2, représentant le mode vidéo choisi. Tout paramètre différent de ceux-ci fera ignorer cette commande par le système. Attention! ce changement de mode n'est pas aussi puissant que MODE du Basic et n'initialise pas toutes les variables système.
  • 05 (&05) : permet d'afficher une ligne horizontale ayant pour trame la confi­guration binaire du caractère passé en paramètre. La valeur 170 aura pour effet de tracer des pointillés.
  • 06 (&06) : affichage autorisé. Il est pos­sible par la commande 21 d'inhiber toute sortie écran. La commande 6 per­mettra de contrecarrer cela.
  • 07 (&07) : bip, tut, ding ... quel que soit ce que vous entendez, le CPC émet un son plutôt désagréable mais surprenant.
  • 08 (&08) : agit comme la touche Del. Le curseur recule et nettoie la place.
  • 09 (&09) : déplacement du curseur d'un caractère vers la droite
  • 10 (&0A) : idem vers le bas.
  • 11 (&08) : pour changer, vers le haut. 12 (&0C) : effacement de l'écran. Si vous connaissez le CLS du Basic, vous savez tout de cette commande.
  • 13 (&0D) : retour chariot, carriage return ... pour tout dire, le curseur vient se positionner en début de ligne.
  • 14 (&0E) : sélection de la couleur de fond de l'écran. Le caractère suivant doit être un code entre 0 et 15, comme le veut la syntaxe de PAPER.
  • 15 (&0F) : sélection de la couleur d'encre. Après le papier, le stylo qui prend en paramètre le même type d'argument que le précédent, comme pour PEN.
  • 16 (&10) : effacement du caractère situé sous le curseur, comme le fait la touche CLR.
  • 17 (&11): efface la partie de la ligne située avant le curseur, dans la fenêtre courante.
  • 18 (&12) : comme ci-dessus, mais après le curseur.
  • 19 (&13) : efface toute la zone située entre le coin haut gauche et le curseur de la fenêtre courante.
  • 20 (&14) : comme ci-dessus, mais du curseur au coin bas droit.
  • 21 (&15) : interdiction d'affichage. Toutes les commandes d'affichage qui  suivront 21 seront ignorées jusqu'à ce que la commande 06 soit rencontrée.
  • 22 (&16) : mode d'affichage OR. Si vous lancez 22 00, l'affichage se fera comme à l'habitude. Si, en revanche, c'est 22 01 qui est rencontré, le fait d'afficher un caractère sur un autre provoquera une superposition des deux.
  • 23 (&17) : positionne le mode d'écriture graphique. J'ai trop peu d'informations là-dessus pour en parler plus encore.
  • 24 (&18) : vidéo inverse. PAPER devient PEN et vice versa l'inverse de l'opposé du contraire.
  • 25 (&19) : redéfinition de caractère. Comme vous le voyez, on trouve de tout dans ces séquences de contrôle. Si vous savez utiliser SYMBOL, vous savez utiliser 25 en la faisant suivre de 9 caractères représentant le code et la matrice à modifier.
  • 26 (&1A) : définition des limites de la fenêtre active. Comme WINDOW en Basic, 26 permet de créer u ne et une seule fenêtre. Les quatre paramètres à passer sont la ligne et la colonne du coin haut droit, suivies de la largeur et de la hauteur de la fenêtre.
  • 27 (&18) : encore un truc qui ne fait rien ou dont les possibilités me sont passées inaperçues.
  • 28 (&1C) : modification de palette. Comme sous Basic avec INK, vous pas­sez trois paramètres qui sont le numéro de couleur, et les deux entrées palette.
  • 29 (&1D) : changement des couleurs de bord. Comme BORDER, 29 demande deux paramètres.
  • 30 (&1E) : positionnement du curseur dans le coin haut gauche de l'écran.
  • 31 (&1F) : positionnement du curseur sur l'écran. Comme LOCATE, il est possible de déplacer le curseur où bon nous semble. Pour cela nous devons passer deux paramètres qui sont respective­ment la colonne et la ligne désirées.

LE PHYSIQUE, ÇA COMPTE

Maintenant que nous disposons de notre petit dictionnaire des commandes, il nous sera plus facile de travailler sur notre catalogue. Quoique, pour ce faire, encore nous faut-il abor­der la structure même du répertoire. Comment disposer des commandes si on ne sait pas vraiment où les mettre? Un répertoire normal est constitué de 64 entrées de 32 caractères. Si nous disons entrées, c'est qu'un fichier peut en utiliser plusieurs pour sa définition. Voici le descriptif d'une entrée:

  • 00 : numéro de User de l'entrée (&E5 signifie fichier effacé).
  • 01 à 08 : nom du fichier.
  • 09 à 11: nom de l'extension. 12 à 14: inutilisés.
  • 15 : nombre d'enregistrements utilisés par l'entrée.
  • 16 à 31 : numéros des blocs de la disquette utilisés par l'entrée.

Dans une entrée, si le nombre d'enregistrements est de 128 (&80), il y a de fortes chances pour qu'une seconde entrée porte le même nom et contien­ne la suite du fichier. A titre indicatif, un bloc contient 8 enregistrements de 128 octets.

L'ART CATALOGUE

Selon les informations ci-dessus, nous voyons donc que nous disposons de 11 caractères qui seront affichés par le système pour nos besoins. Malheureusement, de nombreux affi­chages viendront perturber le nôtre. Le point entre le nom et l'extension, la taille du fichier, autant de choses que nous ne voudrions pas voir apparaître. De plus, il faudra tenir compte de l'ordre d'affichage, car n'oublions pas que le catalogue est trié par ordre alphabétique avant d'être jeté sur l'écran. Tous ces problèmes ne sont pas sans solution, et voici quelques combines. Créez avant tout un bon paquet de fichiers factices qui nous permettront de stocker nos messages. Reprenez ensuite le catalogue sous éditeur de secteurs (secteurs &C1 à &C4 de la piste 0) et mettez à zéro les numéros de blocs utilisés pour ne pas prendre de place sur le disque.

Cela fait, pour toute entrée du catalogue, seuls deux caractères seront uti­lisés pour l'affichage. Le premier carac­tère du nom forcera l'ordre d'affichage de l'entrée.
De 2 à 4, nous positionnons le curseur. 5 et 6 forcent la couleur de l'encre. 7 et 8 contiennent les deux premiers carac­tères à afficher. Après cela, le système génère un point que nous effaçons par la commande 8 au caractère 9. Enfin, 10 et 11 forcent la couleur d'écriture 0 pour ne pas altérer l'écran. Si cette méthode n'est pas très élégante, elle a le mérite de passer partout. A titre d'exemple, tapez ceci dans un catalogue.
Prévoyez avant quelques lignes de sélection de palette, et le tour est joué. Testez le sens d'affichage selon les modes utilisés. Vous ne serez pas au bout de vos surprises.

DIRECTEMENT VOTRE

Nous espérons que ce bond en arrière de quelques années vous aura donné du coeur au ventre.
Je vous laisse et vous souhaite bonne rentrée.

Sined the Barbarian One, ACPC n°45 Oct/nov92, p24-25

Page précédente : Bidouilles ACPC n°44 - Les vecteurs system (2/6)

CPCrulez[Content Management System] v8.7-desktop/cache
Page créée en 235 millisecondes et consultée 980 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.