CATaclysme 1.2b Une production GPA (c) 2004/05/21 revision du 20/12/2021 Introduction Quoi de neuf ? 1) Principe de fonctionnement du logiciel 2) Syntaxe du listing Basic 3) Limites de CATaclysme 4) Pour aller plus loin... Structure d'une entree de catalogue detournee Les restrictions liees a l'affichage du catalogue Credits et remerciements *************************** CATaclysme est un logiciel qui permet de creer des "catalogues detournes" avec un minimum d'efforts et des connaissances minimalistes en Basic. Qu'est-ce qu'un catalogue detourne ? C'est un catalogue particulier, evidemment stocke sur disquette, qui, au lieu d'afficher des noms de fichiers, execute des commandes ! Concretement, quand vous tapez la commande CAT, l'ecran s'efface, les couleurs et le mode graphique changent, et un beau message s'affiche ! Cette technique a tres souvent ete utilisee par les editeurs de jeux (Ere informatique, Chip, U.s.Gold) et les demo-makers (Voyage 93, The Demo, Face Hugger Megademo). Comment ce petit miracle est-il possible ? Nous le devons au vecteur &BB5A du CPC. Cette routine, utilisee par le CPC pour afficher le catalogue, interprete comme des commandes les caracteres dont la valeur ASCII est inferieure a 32. Pour plus d'informations, lisez "Le guide de l'utilisateur", chapitre 7 page 3 (pour un CPC 6128). Temperons nos ardeurs, il n'est malheureusement pas possible de faire tout et n'importe quoi avec ces caracteres de commandes. Certains sont tout bonnement inexploitables dans un catalogue (25, 23). Il faut egalement tenir compte des nombreuses contraintes liees au fait que le CPC essaie d'afficher un catalogue de disquette, informations que nous aborderons par la suite. Quoi de neuf ? -------------- La version 1.1 de CATaclysme apporte deux nouveautes en mode LOCATE. Il est desormais possible de forcer la commande PEN sur chaque entree affichee, ce qui permet de faires des presentations multicolores facilement. CATaclysme gere maintenant correctement le positionnement du curseur en fin de presentation, toujours en mode LOCATE. A noter que l'option PEN force est une requete de Sylvestre, le seul utilisateur de CATaclysme sur Terre, semble t'il :-). La version 1.2 n'apporte rien, si ce n'est la compatibilite CPC 464 et la correction d'un petit bug "mangeant" eventuellement la derniere entree d'une presentation. Consultez quand meme la section "Limites" de Cataclysme, on y decouvre que le CPC 464 a une methode bien a lui d'afficher un catalogue... La version 1.2a a ete creee a la demande de Pulko Mandy. La commande PRINT" est maintenant supportee (avant, seul PRINT " l'etait). Le programme peut ecrire des catalogues au format D10 de Parados (128 entrees, secteurs du catalogue numerotes de &11 a &18). Je ne suis pas sur que cette derniere fonctionnalite serve a grand monde, mais bon, si ca peut faire plaisir :-). La version 1.2b faite au signalement d'un bug par Roudoudou. Le mode LOCATE dans un cas precis pouvait generer une entree vide qui alterait le rendu de l'affichage. Petit rajout, la fonction END LOCATE prend en compte une commande LOCATE si elle est a la fin d'un listing. Sur les versions precedentes, des positions x et y fixes etaient utilisees. Apres cette succinte introduction, voyons comment fonctionne CATaclysme. 1) Principe de fonctionnement du logiciel ------------------------------------------- CATaclysme se compose de deux modules distincts : 1) un interpreteur de fichier ASCII Ce programme lit un fichier Basic sauvegarde en ASCII, analyse son contenu, et transforme les commandes reconnues en codes ASCII correspondants. 2) Un module de generation du catalogue Il lit les donnees creees en memoire par l'interpreteur et cree une structure de type catalogue en memoire. Une fois cette structure cree, le programme l'enregistre sur les quatre secteurs qu'occupe un catalogue standard. Pour generer un catalogue detourne, il vous faut, avant d'utiliser CATaclysme creer un fichier Basic particulier qui "execute" votre presentation. Un exemple ? 100 MODE 1 110 INK 0,0 120 INK 1,24 130 PAPER 0 140 PEN 1 150 LOCATE 13,12 160 PRINT "CECI EST UN TEST" 170 LOCATE 1,24 Une fois le listing au point, il faut le sauvegarder en ASCII (SAVE "PRESENT.TXT",A). Lancez ensuite le programme -CATA.BAS. Le premier module vous demandera, en plus du nom du fichier source, deux informations : * Correction de l'alignement vertical (-2 a 1) : Permet de modifier l'alignement vertical de la presentation. La valeur saisie concerne les commandes LOCATE et WINDOW. * Mode LOCATE (Y/N) : Permet de creer une presentation generique, affichee correctement quel que soit le mode graphique. Ce mode implique de se limiter a des affichages simples de textes, car on ne sait pas normalement dans quel ordre le CPC va traiter les commandes. Une exception a cette regle d'or : la premiere entree du catalogue est toujours affichee en premier ! Il faut donc dans cette ligne placer la commande effacant l'ecran. Si le mode LOCATE n'est pas actif, le programme considere que le MODE 1 est le mode implicite lorsque vous tapez la commande CAT. Si le MODE reel est different, la presentation ne sera pas affichee dans l'ordre pre-determinee par CATaclysme, ce qui se traduira la plupart du temps par des effets etranges et illisibles a l'ecran ! La version 1.1 apporte deux ajouts importants en mode LOCATE. Il est possible de forcer sur chaque entree affichant du texte l'encre utilisee (commande PEN). Autre nouveaute : CATaclysme permet de forcer le positionnement du curseur a la fin de l'affichage. L'idee est de faire en sorte que le nombre d'entrees catalogue a afficher soit un multiple de 4. Si cette condition est remplie, la derniere entree affichee est la meme quel que soit le mode graphique de depart ! CATaclysme va donc creer automatiquement des entrees vides supplementaires et une derniere entree contenant une commande PEN et LOCATE. Si la position par defaut (1,24) ne vous convient pas, vous pouvez la changer en rajoutant a la fin de votre listing une commande LOCATE. Le programme en tiendra compte. Le programme travaille tranquillement (vive le Basic !) puis vous propose d'ecrire le catalogue detourne. Une fois le catalogue cree, tapez simplement la commande CAT ! Sur l'archive, vous trouverez quatre exemples de presentations illustrant les possibilites de CATaclysme. MODE0.TXT : presentation en MODE 0 (pas en mode LOCATE), utilisant l'instruction CHR$(x) pour afficher des bandes de couleurs. MODE1.TXT : presentation en MODE 1 (pas en mode LOCATE) avec un beau logo fait avec des commandes WINDOW. MODE2.TXT : presentation en MODE 2 (mode LOCATE) qui fonctionne correctement quel que soit le mode graphique courant avant de saisir la commande CAT. FORCE1.TXT : presentation en MODE 1 (mode LOCATE) utilisant l'option PEN force. Une fois que votre presentation est faite, peut-etre aimeriez vous copier des fichiers sur votre disquette. C'est tout a fait possible ! Il faut juste faire en sorte que ces fichiers ne soient pas affiches par le catalogue, en les masquant. Tout bon utilitaire de gestion de fichier est capable de ce genre de prouesse :-). 2) Syntaxe du listing BASIC --------------------------- Pour etre correctement interprete par CATaclysme, le listing Basic doit obeir aux regles suivante : * une seule commande par ligne * pas d'utilisation de variables * les valeurs numeriques doivent etre saisie en decimal Le programme reconnait les instructions suivantes : REM ou ' Afficher une remarque dans le listing. La ligne est bien evidemment non interpretee. MODE a Mode graphique PEN a Selection de la couleur du texte PAPER a Selection de la couleur du fond INK a,b,c Definition d'une encre BORDER a,b Definition de la couleur de la bordure de l'icran WINDOW a,b,c,d Definition de la fenetre texte courante PRINT Affichage d'un texte (Attention, la commande se comporte comme un PRINT ""; PRINT CHR$(x) Affichage d'un ou d'une serie de caracteres. La encore, la commande correspond a un PRINT CHR$(x); CLS Effacement de la fenetre courante LOCATE x,y Positionnement du curseur texte en colonne x ligne y Certaines commandes sont plus restrictives qu'en "pur" Basic : * On ne peut pas afficher des caracteres superieurs a 127. La commande sera correctement interpretee, mais c'est le caractere (char-128) qui sera affiche. Blamez la routine systeme de traitement du catalogue, qui fait disparaitre le bit 7 de tous les octets affiches. * En mode LOCATE, a moins de savoir exactement ce que vous faites, il est peu conseille d'utiliser la commande WINDOW. La commande MODE doit etre la premiere utilisee dans le listing Basic. Il n'est pas non plus evident de changer la meme couleur plusieurs fois de suite, ni d'utiliser le mode transparent car vous ne savez pas quand les commandes sont executees. 3) Limites liees a CATaclysme ----------------------------- Vous ne pouvez pas utiliser le caractere " dans vos textes (il sert de separateur en Basic). Remplacez-le par un ' et jouez de l'editeur de secteurs si vous souhaitez absolument utiliser des guillemets une fois la presentation ecrite sur disque... CATaclysme n'a pas du tout ete prevu pour gerer l'affichage d'un catalogue detourne avec la commande |DIR. Cela n'a de reelle incidence qu'en MODE 2, ou le catalogue est alors affiche sur cinq colonnes. Voir a ce sujet le chapitre suivant. De toute maniere, personne n'utilise |DIR, alors bon... Les presentation en mode standard ne fonctionneront pas telles quelles. Le CPC 464 n'affiche pas comme ses freres un catalogue. A la fin de chaque "ligne" de fichiers, il fait un retour a la ligne suivante. Le probleme, c'est que ce retour n'est pas inhibe par le caractere &15. Un simple affiche de texte (voir l'exemple "464BAD.BAS") se traduit par un affichage deforme ! CATaclysme ne prend pas en charge cette particularite. La solution ? Positionner de judicieuses commandes LOCATE dans le listing source aux endroits ou les caracteres sont decales. Regardez le listing 464GOOD.BAS. la version corrigee du premier exemple. 4) Pour aller plus loin... -------------------------- Structure d'une entree catalogue detournee : ******************************************** En mode standard : ------------------ 00 id 06 dd dd dd dd dd 17 dd dd 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 = autoriser l'affichage. 15 = interdire l'affichage : utile car le catalogue affichage des blancs et la taille du fichier entre chaque nom. 17 = commande ne faisant rien, mais necessitant un parametre. Elle permet de masquer le point que le systeme affiche habituellement entre le nom et l'extension du fichier. id = numero d'index : permet d'ordonner de facon sequentielle les entrees. dd = donnee En mode Locate : ---------------- Entree si la commande PRINT est utilisee : 00 06 1F xx yy dd dd dd 17 dd dd 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 = autoriser l'affichage. 15 = interdire l'affichage : utile car le catalogue affichage des blancs et la taille du fichier entre chaque nom. 17 = commande ne faisant rien, mais necessitant un parametre. Elle permet de masquer le point que le systeme affiche habituellement entre le nom et l'extension du fichier. 1F = code ASCII de la commande LOCATE xx & yy : parametres de la commande LOCATE Entree si la commande PRINT n'est pas utilisee 00 06 dd dd dd dd dd dd 17 dd dd 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Il est evidement possible d'optimiser cette structure en fonction des commandes utilisees, CATaclysme ne pretend pas etre l'ultime generateur de catalogue detournes ! Entree si l'option PEN force est activee 00 06 1F xx yy 0F pp dd 17 dd dd 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Cela limite evidemment la longueur des textes saisis, mais au moins, vous pouvez changer la couleur d'ecriture sans effet secondaire. Les restrictions liees a l'affichage du catalogue ************************************************* * En fonction du mode graphique en cours au moment ou vous lancez la commande CAT, le catalogue de la disquette sera affichee sur une colonne (MODE 0), deux colonnes (MODE 1) ou quatre colonnes (MODE 2). Le CPC effectue un tri alphabetique des fichiers, puis les affiche par colonne ! Cette facon de proceder explique pourquoi le CPC n'affiche pas de facon sequentielle les entrees du catalogue, et qu'une presentation prevue pour fonctionner dans un mode graphique ne fonctionne pas dans un autre MODE. CATaclysme essaie de resoudre cette equation de deux manieres differentes : - Il utilise un octet d'indexation pour chaque entree du catalogue, ce qui permet de determiner quand le CPC traitera les commandes chaque entree. Cela ne permet pas de resoudre le probleme du MODE de depart, mais evite d'avoir a se triturer les meninges pour savoir si le CPC va executer telle commande avant telle autre. - Le curseur est systematiquement positionne a un endroit precis de l'ecran au debut de chaque entree. C'est le mode LOCATE, qui s'affranchit lui de toute notion d'indexation. Revers de la medaille, il offre fatalement moins de possibilites que le mode indexe. * La routine d'affichage du catalogue insere un point entre le nom et l'extension du fichier. Elle rajoute a la fin du fichier sa taille. Ces informations parasites doivent etre "effacees" ou inhibees afin que l'affichage ne soit pas perturbe. Il existe plusieurs methodes pour supprimer le point. La plus simple consiste a desactiver/reactiver l'affichage, mais cela "prend" deux octets. On peut se servir de la commande CHR$(8), mais il faut alors etre sur qu'un caractere sera affiche apres le CHR$(8). La methode la plus elegante, trouvee par Sylvestre, consiste a utiliser la commande CHR$(23). Pour l'affichage du catalogue, elle n'a aucun effet mais necessite un parametre ! Place juste a la fin du nom du fichier, elle empeche donc le point de s'afficher ! Pour eviter l'affichage de la taille du fichier, le plus simple est de se servir des commandes pour desactiver l'affichage ( CHR$(21) ) puis le reactiver lorsque le besoin s'en fait sentir ( CHR$(6) ). En pratique, il est fortement conseille d'activer l'affichage au debut de chaque entree, car toutes les commandes manipulant la position du curseur texte en ont besoin (LOCATE, etc...). * Le systeme ne permet pas d'afficher des caracteres ASCII superieurs a 127. Aucun moyen de contourner cette limitation. Maigre consolation, on peut afficher les caracteres 0 a 31. Ils ne sont pas grandioses, mais bon... * Les commandes ne peuvent pas etre a cheval sur deux entrees catalogue. Si votre commande "deborde" d'une ligne, elle ira chercher les parametres dont elle a besoin dans les caracteres affiches par le CPC a la suite du nom de fichier ! Ceci peut s'averer un moyen tordu d'optimisation (n'est ce pas, Sylvestre !). CATaclysme ne gere pas ce genre de bidouille, et remplit avec des 00 les zones trop petites pour contenir des commandes. * Les commandes SYMBOL (CHR$(&19)), CHR$(&5), CHR$(17) ne sont pas utilisables. - CHR$(&5) et CHR$(&17) car le mode graphique ne peut pas etre active - SYMBOL pour de multiples raisons : table des caracteres initialisee par defaut pas le CPC en SYMBOL AFTER 240, parametres de la commande ne tenant pas sur une entree catalogue, impossibilite d'utiliser des valeurs superieures a 127, etc... Credits et remerciements ------------------------ CATaclysme a ete programme par Tom et Jerry / GPA. Ce logiciel a ete developpe en un temps assez court (environ un mois), ce qui explique son interface deplorable et ses capacites limitees :-). Un grand merci a Super Sylvestre, qui m'a encourage fortemment (harcele ?) a creer ce programme. Cette idee m'avait deja ete suggeree par Iron lors de l'Amstrad Expo 2004, mais a l'epoque, j'avais juge le sujet sans reel interet apres avoir teste un generateur de catalogues en assembleur assez minable. C'est grace a Super Sylvestre que je me suis apercu que finalement, cet aspect etrange du CPC s'avere digne de consideration. Salutation a tous les survivants du CPC, en particulier a mes collegues d'infortunes Tronic et Tenebros, qui eux aussi, dans leurs antres, nous concoctent surement des programmes d'enfer :-)). |