Divers :
  Softs à utiliser
  Le son
  Photo d'écran
  Identifier CRTC

Cat'arts :
  Introduction
  Ordre d'exécution
  Taire le système
  Bidouilles

Graphisme CPC :
  Introduction
  Le pixel
  Les limites
  Hinting
  Antialiasing (1)
  Antialiasing (2)
  Antialiasing (3)
  Luminosité
  Subpixel
  Gestalttheorie

Couleurs :
  Les couleurs
  Flipping
  Tableau récap.
  Complémentaires
  Fondus


Tout savoir sur la création des CAT'arts

II - Ordre d'exécution des catalogues :
Comment s'en servir
écrit le 14/12/2007, révisé le 26/09/2012

Si vous lisez les fichiers d'un catalogue de fichiers de la gauche vers la droite (tel qu'ils sont affichés à l'écran), vous remarquerez que cet ordre change en fonction du mode graphique dans lequel vous êtes ou de l'instruction utilisée : CAT ou ùDIR.


1 - Comment s'affiche un CAT
Il est utile de mieux détailler les différences dans l'affichage d'un catalogue pour vous aider à en tirer parti lorsque cela est nécessaire. L'idée étant avant tout que vous sachiez dès maintenant que les instructions utilisables ne sont pas focément exécutées dans l'ordre qu'on voudrait. Je vous propose de détailler un peu plus loin ce qu'on pourra faire de cette misère.

Nombre de colonnes :
Tout d'abord, il faut bien comprendre que le nombre de colonne dépend de la place dont dispose le système pour afficher son CAT à l'écran. Cela dépend notamment du mode, mais aussi et surtout, en fait, de la taille de fenêtre courante. Par exemple, si vous êtes en mode 0, il est clair que l'affichage se fera en une seule colonne. Mais si vous êtes en mode 1 et que faites une window de 20 de large, ça sera pareil ! Et si vous êtes en mode 2 et que vous faites ùDIR, votre CAT sera sur 5 colonnes ! À savoir que les demi-colonnes n'existent pas. Il n'est donc possible d'afficher que 1, 2, 3, 4 ou 5 colonnes avec ùDIR et 1,2,3 ou 4 colonnes avec CAT.

Tri des fichiers :
Comme dit plus haut, il faut savoir que le système opère un tri alphabétique avant d'afficher les noms de fichiers... quand on tape CAT ! Parce que si vous tapez ùDIR, ces fichiers seront affichés dans l'ordre de lecture sur la disquette. On peut donc être en mode 1, et avoir les fichiers dans un certain ordre si vous tapez CAT mais un ordre différent si vous tapez ùDIR !

Avec ùDIR, l'ordre sera de gauche à droite puis de haut en bas, au fur et à mesure que les fichiers seront lus sur la disquette. Avec CAT, l'ordre sera alphabétique par colonne. On peut en fait considérer une grande liste verticale, avec les noms affichés dans l'ordre aphabétique de haut en bas, puis arrivé en bas, cette liste continue sur la colonne suivante et ainsi de suite.

Nombre de fichiers :
La fin de cette liste n'est pas la même en CAT et en ùDIR. ùDIR affiche les fichiers de gauche à droite. Si par exemple il manque 2 fichiers pour former un carré parfait, la liste s'arrêtera en cours d'une ligne. La dernière ligne seulement pourra donc se trouver incomplète, et contenir moins de fichiers. En revanche, en mode CAT, c'est verticalement que les fichiers sont ordonnés. Selon le nombre de fichiers à afficher, il se pourra que la dernière colonne soit plus petite de 3 fichiers en mode 2 par exemple.

Il faut savoir qu'une entrée de catalogue ne correspond pas forcément à un fichier affiché. Par exemple, les fichiers cachés n'apparaissent pas. Il faut aussi savoir que si un fichier dépasse 16k, il consommera autant d'entrées au catalogue que sa taille utilisera de blocs de 16k. Par exemple un fichier de 33k utilisera 16+16+1 = 3 entrées de catalogue, ces 3 entrées n'apparaîtront qu'en une fois sur le catalogue, naturellement.

En conclusion...
Il faut savoir que si cet assortiment des fichiers a un côté rébarbatif et libraire, il est la clé de voûte d'une importante série d'astuces. Par exemple, cela pourra avoir un impact chaque fois que vous souhaiterez être compatibles entre différents modes d'affichage (modes écrans et/ou commande CAT/ùDIR), ou inclure un certain nombre de fichiers dans votre catalogue, parallèlement à une tentative de décoration.

Exemple avec CAT (sur 4 colonnes)

FILENAMA FILENAME FILENAMI FILENAMM
FILENAMB FILENAMF FILENAMJ (vide)
FILENAMC FILENAMG FILENAMK (vide)
FILENAMD FILENAMH FILENAML (vide)


Exemple avec ùDIR (sur 4 colonnes)

FILENAMG FILENAMB FILENAMJ FILENAMD
FILENAMK FILENAMM FILENAMC FILENAML
FILENAMA FILENAMF FILENAMI FILENAME
FILENAMH (vide) (vide) (vide)



2 - Mode global ou séquentiel ?
Déjà, il est important de savoir si on tient à ce que le catalogue puisse fonctionner aussi bien dans chaque mode graphique ou si partir du mode 1 nous convient. Le choix est généralement purement arbitraire.

Mode global : pas d'échelle de temps
Dans ce premier cas, il faut savoir qu'il n'y a pas de secret. Si on veut être super polyvalent, il faut que le catalogue puisse s'exécuter sans faille même dans le désordre. L'intérêt, c'est qu'on économise des octets d'indexage dont on n'a plus besoin (voir mode séquentiel), puisqu'on ne tiendra pas compte du tri alphabétique effectué par le système. L'inconvénient, c'est qu'on risque de manquer rapidement de place, vu qu'on est obligé de mettre un LOCATE avant chaque texte affiché, pour chaque entrée de catalogue. Et surtout, il faut savoir que ce mode interdit tout effet visuel de type animation. On devra uniquement gérer un écran statique, sachant qu'il s'affichera dans un ordre différent en fonction de la résolution, mais que le but est qu'à la fin, ce soit toujours le même truc qu'on voit à l'écran. Dans cet ordre d'idée, la Ultimate Megademo de Face Hugger est probablement le plus bel exemple. Il n'y a pas de fioritures inutiles, le catalogue s'affiche de gauche à droite (c'en est même joli), c'est en mode 2, et ça marche dans tous les cas (si toutefois on pardonne le petit "ç" qui remplace le "/" sur les claviers français).

Mode séquentiel : avec échelle de temps
Les détracteur de ce premier cas de figure seront généralement des personnes utilisant le CPC en mode 2 au boot, ce sont souvent des programmeurs qui codent sur leur CPC. On verra aussi certaines personnes utilisant Parados, qui peuvent parfois associer l'intruction CAT à un raccourci clavier qui le précède de l'intruction MODE 2.

La majorité des utilisateurs préféreront ce cas de figure qui permet des CAT plus attrayants, et parfois animés. Ce sont les personnes qui considèrent qu'un CPC démarre normalement en mode 1 et qu'il est stupide de lancer un CAT dans un autre mode. On citera essentiellement les gamers et tous ceux qui n'utilisent pas leur CPC comme machine de travail.

Ce cas de figure pose la lourde contrainte d'ordonner les lignes d'intruction (les entrées du catalogues) en les précédant "d'octets d'indexage", en s'arrangeant pour que les caractères d'indexage n'apparaissent pas, etc. C'est un peu lourd, mais d'un autre côté, c'est sans doute là qu'on peut se permettre la plus grande finesse. Comme on sait ce qui était affiché "avant", on peut optimiser ce qui sera affiché "après", et ainsi gagner des octets, avoir un meilleur détail de ce qu'on fait, voire même pourquoi pas animer son catalogue ? Le point de départ de ce type d'affichage est de considérer que les utilisateurs utilisent généralement CAT et très rarement ùDIR, qu'il font un CAT dans l'état d'allumage de la machine à savoir en mode 1, sans WINDOW de définie, et bien souvent en partant d'un PAPER 0 et PEN 1. Certains diront cependant que de plus en plus de CPC équipés de RAMcard bootent en mode 2.


3 - CATalogues en mode global
Etudions plus en détail les possibilités offertes par les catalogues dans ce mode global. Comme vous savez, les entrées lues par ce CATalogue n'étant pas triées alphabétiquement, un CAT les exécutera anarchiquement. On peut toutefois voir que ce CATalogue est à égalité avec le CAT séquentiel devant la commande ùDIR, puisque le tri par "ordre d'apparition" des instructions est le même dans les 2 cas.

Dans les explications qui suivent, on considérera que les fichiers portent comme nom les 16 premières lettres de l'alphabet. Elle seront donc affichées de la façon suivante si on tape CAT en mode 2 :

A E I M
B F J N
C G K O
D H L P

Ordre des instructions
Déjà, il faut admettre que seul importe le résultat affiché, peu importe l'ordre dans lequel il sera affiché. Ensuite il faut se réjouir, car on sait toujours quelle est la première ligne exécutée, puisque la première place d'un ordre alphabétique est toujours le même quelque soit le nombre de colonnes... et si on s'arrange bien pour avoir un nombre d'entrées multiple de 4, alors on sait aussi quelle sera la dernière entrée lue quelque soit le mode. Si on reprend notre exemple précédent, on a donc : A - (B à O dans le désordre) - P

L'entrée A permettra généralement de commencer à mettre des instructions prioritaires comme le mode par exemple (qui est toujours en premier de la liste alphabétique, puisque c'est &04), parfois le PAPER et PEN s'il est utilisé par la suite, éventuellement l'activation du mode transparent, et à la rigueur si on décide de réduire la fenêtre du CAT, un Window pour des fonctions économiques avancées (naturellement par manque de place, on ne mettra pas tout, mais seulement ce qui peut tenir). Certains farfadets malicieux essaieront de masquer l'affichage désordonné en mettant 2 commandes de couleurs sur la même ligne pour cacher l'affichage, et rétablir des couleurs visible en fin de CAT.

La sortie, P, devra servir à rétablir les fonctions vitales à une sortie propre du CAT. Par exemple remettre le PEN ou PAPER à des valeurs exploitables, rétablir une couleur visible si vous êtes un farfadet, retirer la transparence pour les 464, et surtout positionner le curseur (ou le ready) à une position de choix, (Face Hugger a oublié ce détail, ce qui oblige à taper ùCPM à la main, alors que la touche copy nous aurait permis d'être fénéant).

Instructions en désordre
Donc nous voilà au cœur de ce CAT qui apparaîtra dans un désordre quasi aléatoire. Naturellement, on évitera les commandes MODE, CLS, WINDOW, qui ont un impact sur ce qui a été ou va être affiché, alors qu'on ne sait ce qui a déjà ou ce qui sera encore à afficher.

Les instruction BORDER et INK s'y prêtent tout à fait, pour le reste, cela concernera de l'affichage pur et dur. Dans ce cas, il faut penser que chaque entrée du CATalogue sera autonome en entrée et en sortie. En entrée, parce que s'il est question de positionner un texte, on ne pourra pas se baser sur une positions existante. En sortie parce que s'il est question d'écrire avec une encre différente du reste du texte, il est préférable de rétablir la valeur de PEN à la valeur standard du reste du texte. Les instructions auront finalement toujours le même format, mais je vous propose 2 options possibles.

Option homogène :
Ce type d'entrée du catalogue ne privilégiera aucune couleur d'affichage. C'est la méthode la plus standard, quoique jamais utilisée telle quelle. Elle permet d'afficher 3 caractères (représentés ici en vert vif) par entrée de catalogue. Sans doute la plus rentable en mode 0.

06 1F xx xx 0F xx 01 17 (point) 02 03 15

Option hétérogène :
Cette variante permet d'avoir davantage d'affichage sur une couleur, "identique à l'option homogène" sur une autre, et très faible sur les autres. Il faut considérer une couleur de base qui sera la norme de votre CATalogue et qui sera utilisée presque partout. On affichera de cette façon :

06 1F xx xx 01 02 03 17 (point) 04 05 15

On pourra dans cette couleur afficher 5 caractères par entrée. Une seconde couleur sera disponible par la technique citée plus loin du &18. Elle consiste à se mettre en mode transparent et définir un PAPER qui ne sera jamais utilisé, et qui servira de stockage pour un PEN rapidement accessible. En revanche, il faudra rétablir la couleur standard après utilisation :

06 1F xx xx 18 01 02 17 (point) 03 18 15

On a accès à 3 caractères pour cette couleur. En revanche, toute autre couleur sera difficile d'accès, car il faudra déclarer manuellement la couleur, et restituer ensuite la couleur standard :

06 1F xx xx 0F xx 01 17 (point) 0F xx 15

On n'a plus droit qu'à 1 caractère par entrée. Cette technique utilisée dans la compil Halloween est particulièrement intéressante en mode 1.


4 - Les CATalogues Séquentiels

À quoi ça ressemble ?
De façon bien concrète, regardons comment il est classique d'utiliser une entrée de CAT prévue pour fonctionner en mode séquetiel :

AA 06 -- -- -- -- -- 17 (point) -- -- 15

Le premier octet AA sera en fait l'index de l'entrée. Cet index ne sera pas affiché s'il est précédé d'une ligne identique à celle-ci. L'index sera suivi de &06 pour autoriser l'affichage des octets suivants. Le &17 (négociable selon les cas de figures avec d'autres bidouilles) sert à éviter l'affichage du point par le système. Il reste encore 2 octets affichés, et enfin l'octet &15 qui interdit l'affichage par le système des informations de taille de fichier et de ce précieux octet d'index qui commencera l'entrée suivante. La première entrée du CAT peut se présenter comme suit :

04 xx -- -- -- -- -- 17 (point) -- -- 15

Si on est certain que &04 est le plus petit chiffre du CAT, afin qu'il soit au début (il est souvent utile de commencer par choisir un mode).

00 -- -- -- -- -- -- 17 (point) -- -- 15

Si on ne souhaite pas changer le mode, le &00 n'affichera rien, et l'entrée aura un octet libéré.

Dans ce mode séquentiel, on peut compter une moyenne de 7 octets par entrée, à savoir 7x64=448 octets utilisables dans tout le CAT au maximum. C'est peu, mais espérons que ce soit une forme de stimulation !

Mettons qu'à cette structure de base très statique, peuvent se greffer de nombreuses astuces que je présenterai plus loin dans cet article. C'est probablement dans ce mode séquentiel que les astuces permettent le plus librement de contourner les fonctions de base des caractères de contrôle. En exploitant au maximum toutes les optimisations possibles de ce mode, on peut facilement gagner une trentaine d'octets vraiment utilisables sur le CAT complet.


5 - Les CATalogues Universels (attention : mode avancé, donc compliqué)
Afin déviter que les purs et les saints ne se fasse éternellement la guerre, les premiers considérant qu'un CPC démarre toujours en mode 1, et les autres (ayant utilisé une ROM en mode 2) qui considèrent que seule l'universalité de fonctionnement peut être noble, j'aimerais vous montrer comment il est possible de faire un catalogue animé qui fonctionne dans tous les modes et ainsi concilier les intérêts de chacun et calmer les ardeurs de tous.

Tout d'abord, regardons les points communs de ces différents accès au CATalogue :

ùDIR et CAT séquentiel :
Il existe un cas particulier où ces 2 instructions vont afficher les entrées dans le même ordre. Il suffit pour cela que l'ordre d'affichage soit le même que l'ordre d'apparition des fichiers sur la disquette. Simple mais il fallait y penser. En revanche, il reste l'incompatibilité des modes à gérer... c'est surtout critique pour le CAT, compte tenu que le ùDIR lit les instructions dans le même ordre quel que soit le mode d'affichage. Juste à noter que les octets affichés après chaque entrée ne sont cependant pas les mêmes.

CAT séquentiel en MODE 0+1+2
Dans la mesure où le classement est vertical selon une liste, et l'affichage est horizontal, la seule chose qui puisse concilier les modes est une partie verticale qui existerait dans tous les modes. En fait, la seule différence est l'endroit où est coupée cette liste. Si par exemple on met des instructions vides (&00) dans les parties de liste différentes, et des vraies instructions dans les parties communes, alors on pourra avoir un catalogue qui fonctionne dans tous les modes. Par exemple, si on suppose un catalogue contenant 16 entrées de A à P, la ligne A sera toujours lue avant la ligne B, qui sera toujours lue avant la ligne C qui sera toujours lue avant la ligne D... mais on en reste là. Après, on voit que la ligne P est toujours affichée en dernier, donc après D. Et en fouillant vraiment bien, bien, bien, y'aurait bien un truc qui est toujours entre D et P, ça serait H ou L, au choix, mais l'une par rapport à l'autre ne sont pas toujours lues dans le même ordre (H est lue après L en mode 1 uniquement).

A E I M
B F J N
C G K O
D H L P

Histoire de se mettre d'accord et simplifier l'explication, on va choisir arbitrairement ABCDLP (en rouge) comme universel. Mais ce n'est pas la seule solution, par exemple, symétriquement, (en gras italique), on a la série AEMNOP, et beaucoup d'autres. Ce ne sont pas les combinaisons qui manquent et on s'aperçoit ici que sur un CAT complet de 64 entrées, on n'aurait plus droit qu'à 18 entrées. C'est peu, mais en économisant bien, on peut toujours faire des petites choses... et puis avec des CATalogues mixtes (voir plus loin), on devrait gagner encore un peu de terrain. Mais on peut très bien se contenter des possibilités les plus probables, comme par exemple le mode 2 + mode 1... dans ce cas, je vous épargne le schémas, on a 33 entrées ordonnées possibles.

Ne pas oublier que dans ce cas, les entrées restantes sont perdues et ne doivent pas comporter d'affichage : rien ! Elle doivent être déclarées avec une lettre bidon qui servira simplement à ordonner et classer les autres instruction, celles qui nous serviront.

Utiliser les entrées mortes :
Admettons que cet intitulé est barbare... vous voulez que votre CAT se déroule systématiquement dans le même ordre quel que soit votre mode d'affichage et la commande utilisée ? Il est donc tout à fait compatible d'utiliser par exemple ABCDLP en s'arrangeant pour que ces entrées apparaissent dans cet ordre sur la disquette... naturellement on n'oubliera pas de mettre sur la disquette les entrées mortes. Mais selon votre technique d'affichage, si vous utlisez sur toutes vos instructions CAT des "barrières" avec &06 et &15, alors vous pouvez très bien utiliser des vrais noms de fichiers à la place de vos entrées mortes. Attention cependant à avoir bien le nombre de fichiers, car c'est lui qui comptera et non pas le nombre d'entrées utilisées par eux, par exemple dans le cas de gros fichiers. C'est la technique utilisée dans le CAT de ClimaxG. Cette démo en basic nécessitait de camoufler les fichiers sans qu'on puisse se permettre de perdre des entrées, pour qu'il puisse fonctionner en mode 1 et en mode 2.


6 - Le mode mixte : mode super avancé pour une voie royale !
Il est possible de combiner tout ça pour en faire la soupe du siècle ! Reprenons l'exemple du CATalogue séquentiel universel précédent. On s'apeçoit que les entrées E et I sont toujours exécutées entre A et M, mais qu'en revanche, on ne sait pas laquelle des 2 sera exécutée en premier. Ce n'est pas toujours un problème. S'il est question de définir des couleurs, on pourra le faire sans se soucier de l'ordre d'affichage des instructions. Toujours sur le même exemple, on sait que B sera toujours exécuté avant O. On ne sait pas combien de temps avant, mais on sait que ce sera dans cet ordre, et séparé par un nombre variable d'instructions. Rien n'empêche dans ce cas, de définir par exemple un arrière-plan en B et un premier plan en O. Ce genre de CAT propose d'innombrables combinaisons de ce type, et il est prudent de vérifier leur compatibilité entre elles avant de se lancer dans des projets plus complexes. Par exemple, D vient toujours après B, mais pas toujours après O...

Mélanger ces 2 modes peut se faire de façon très simple. Par exemple, on peut considérer les entrées ABEFIJMN comme étant en mode global, sachant que OP suivront toujours dans cet ordre si CDGHKL ne sont pas utilisés. Dans ce cas, on aura la séquence suivante :
A - (BEFIJM dans un ordre aléatoire) - N - O - P

Et si on a des besoin précis, on peut revenir intégrer de cette petite cuisine précédente dans la partie globale en considérant par exemple que B est toujours avant J.

Si on considère que les entrée mortes peuvent contenir des fichiers, on arrive finalement à ne pas trop perdre de place. Cette technique a encore été utilisée dans ClimaxG.



<<< precédent <<< >>> suivant >>>