CODING ★ CATALOGUES DECORES ★

Bidouilles ACPC n°03 - Catalogue décorés
BANDE DE PETITS CEPECIENS

Alors, ça boume depuis la dernière fois que l'on s'est lu ? Nous, ici, nous pouvons dire que nous allons bien. Nous essayons de remplir notre tâche d'intermédiaire du mieux que nous le pouvons mais cela n'est parfois pas facile. Et le petit blond, dans le fond là-bas, tu ne nous as pas encore écrit ? Allez tous vous acheter du papier et un stylo, et posez des questions que diable ! Sinon comment voulez-vous que Dupro il se décarcasse ?

OK, IL Y A DES BUGS

Il est bon de rappeler à tous les petits oiseaux qui ? pensent que toutes les astuces de programmation vont leur tomber toutes cuites dans le bec sans qu'ils se remuent un peu. que la maîtrise de son ordinateur ne s'acquiert pas en passant des heures entières le nez collé à son écran, ;i jouer à tactac-poumpoum. Il faut se remuer, alors quoi ! Tapez un peu ce qui est passé dans cette rubrique et réfléchissez. Il y a des bugs, c'est sûr (mais pas dans les routines, c'est certain, nous ne sommes pas des sauvages tout de même !) et c'est à vous de les découvrir. Au passage, je tiens à remercier Lobax, un poto de Quimper, qui a remarqué que dans le numéro 1 de Sang Pour Sang, l'instruction INSTR n'était pas donnée avec la bonne syntaxe. Mais nous n'avons jamais dit que nous étions parole d'évangile, tout ce que nous désirons, c'est que ces quelques lignes vous éveillent et vous forcent à ouvrir vos manuels et vos documentations. Il est temps pour vous de sortir de votre cocon et de vous secouer pour devenir un autre P. Kahn (père du Turbo Pascal et patron de Borland) ou le second B. Gates, (PDG de Microsoft et concepteur-programmeur du Basic Apple). Alors, mille millions de milliards de sabords, secouez-vous les puces et écrivez si le moindre problème se pose pour vous. Nous sommes là pour vous aider avant tout. Pour les pros de l'assembleur qui ont des astuces à ne plus savoir qu' en faire, envoyez-nous des trucs, nous vous les échangerons contre des joysticks.

CATALOGUES DECORES

Pas mai de lecteurs nous ont écrit pour nous demander des précisions sur les pages écrans farfelues installées par la simple instruction CAT. Pour réussir à faire ce genre de plaisanterie, il suffit de connaître quelques codes de contrôle et de posséder un éditeur de secteur. Des éditeurs de secteur, il en existe des tonnes sur te marché ( Discology , Oddjob ... ). Il suffit, pour en acquérir un, de s'adresser à son revendeur de logiciels le plus proche. Mais une fois que vous aurez décidé de vous lancer dans cette périlleuse entreprise, vous commencerez à apercevoir certains aspects plutôt... comment dirais-je... très, très énervants, irritants , à jeter le CPC. ou soi. par la fenêtre, en bref, décourageants. Voici avant tout ce qu'il faut faire pour commencer l'opération. Le formatage d'une disquette n'est pas obligatoire mais il est utile car il permet de nettoyer, en plus du reste de la disquette, les secteurs contenant le catalogue. Le répertoire est normalement situé sur la piste zéro, et son début est sur le premier secteur (C1). Jusque là, pas de problèmes. Tout se passe bien. Ensuite, nous allons sauver des fichiers nuls, histoire de dire qu'il y aura une organisation dans le catalogue. Sachez auparavant qu'un répertoire de CPC ne contient que 64 entrées. Cela signifie que 64 fichiers pourront être stockés sur la disquette et pas un de plus. Si vous sauvez 64 programmes de 1 ko, vous n'utiliserez pas la totalité de la disquette, mais elle sera quand même pleine car elle n'acceptera pas d'autre entrée dans le répertoire. Le message "directory full" témoignera du manque d'espace libre sur le disque. Ceci ne prend pas en compte le User utilisé et si les 64 fichiers sont éparpillés dans les 8 Users normaux, la même erreur se produira. Revenons donc à la phase d'initialisation de la disquette. Nous allons ouvrir 26 fichiers sur la disquette avec le programme suivant, par exemple :

10 FOR I=1 TO 26:SAVE CHR$(I+64);PRINT I;NEXT

Ceci fait, un répertoire existe et il est organisé normalement. Maintenant, il faut prendre en compte le travail effectué par l'instruction CAT. En effet, celle-ci trie les programmes par ordre alphabétique avant d'afficher leur nom sur l'écran. Ceci nous contraint à ordonner chaque ligne de codes contenue dans un nom de fichier de manière à ce que toutes les lignes soient affichées dans un ordre correct Cette organisation de l'affichage est de plus. fonction du mode utilisé lors du CAT. Nous vous offrons donc ici une manière peu élégante de procéder, mais elle a fait ses preuves lors de la réalisation de ce petit exemple. Elle consiste a isoler deux par deux les caractères à imprimer, si ceux-ci ne sont pas des caractères de contrôle. Cela permet d'éviter l'affichage des points et des tailles des fichiers imprimés par l'Amsdos. Avant de poursuivre, étudions les Outils mis à noue disposition pour l'occasion.

LES CODES DE CONTROLE

Pour agir de belle façon sur l'écran en ne passant que par l'impression de caractères, il existe une manière simple. Il suffit d'utiliser les codes de contrôle permettant diverses opérations graphiques de base. Ces caractères spéciaux possèdent un code Ascii inférieur à 32. Pour vous faciliter la tâche, nous allons en donner la liste agrémentée de petites explications. Cessons de parler et passons aux actes !

  • 00: ce code est nul. il ne fait strictement rien, si ce n'est prendre de la place ou représenter un caractère graphique visualisable grâce à l'instruction suivante.
  • 01 ; cette fonction permet d'imprimer le caractère graphique suivant ce code. Cela sert si vous désirez écrire un caractère de contrôle plutôt que de l'interpréter.
  • 02 ; interdiction au système d'afficher le curseur, il sera donc invisible.
  • 03 : fonction complémentaire de la précédente; elle autorise l'affichage du curseur.
  • 04 : ce code a la même fonction que l'instruction Basic MODE. L'octet suivant représentera le mode d'affichage à utiliser et sera compris entre 0 et 2. sans quoi, l'instruction sera ignorée. Attention toutefois, car tous les pointeurs Basic ne sont pas affectés par ce genre d'intervention.
  • 05 : ce truc est réellement infâme. Il suffit de l'essayer sous Basic par :PRINT CHR$(5);CHR$(N)
    Où N est une valeur entre 0 et 255 inclus. Cela fait des petits traits sympas au bas de l'écran, mais l'intérêt de ce machin m'échappe un peu. Je crie alors "Help !!!", au cas où il y aurait quelqu'un qui soit susceptible de me renseigner sur l'intérêt réel (le ce sujet Passons.
  • 06 : permet au système d'afficher des caractères à l'écran. Si toute altération vidéo avait été interdite par le code 21, vu ci-après, 06 permet de réutiliser l'écran dans des conditions normales.
  • 07 : ping, bip ou tut tout dépend de votre ouïe.
  • 08 : agit comme si la touche Del avait été enfoncée. Le curseur revient sur le caractère précédent et nettoie sa place.
  • 09 : déplace le curseur d'un caractère vers la droite, sans altérer l'écran. On ne sait jamais, cela peut servir.
  • 10 (&0A) : comme 09. mais vers le bas.
  • 11 (&0B) : idem, mais vers le haut.
  • 12 (&0C) : est aux codes de contrôle ce que CLS est au Basic : effacement de la fenêtre courante et positionnement du curseur dans son coin supérieur droit.
  • 13 (&0D) : positionne le curseur au début de la ligne actuelle.
  • 14 (&0E) : moi. je n'ai pas peur, et elle non plus, car cette fonction sert a fixer l'encre utilisée pour le fond (comme PAPER). Un paramètre doit suivre ce code et être compris entre 0 et 15.
  • 15 (&0F) : ceci vaut la peine d'être connu car c'est l'attribution d'une encre au stylo (comme PEN). Un paramètre de la même trempe que le précédent.
  • 16 (&10) : efface le caractère sous le curseur.
  • 17 (&11) : efface tous les caractères de la fenêtre courante situés avant le curseur.
  • 18 (&12) : efface le reste de la ligne en cours, dans la fenêtre actuelle.
  • 19 (&13) : nettoie la fenêtre courante, de son coin supérieur gauche, jusqu'au curseur.
  • 20 (&14) : nettoie la fenêtre courante, du curseur jusqu'à son coin inférieur droit (j'aime les répétitions).
  • 21 (&15) : après ce code, aucun caractère ne sera affiché, sauf si vous utilisez la fonction 6 qui est son inverse.
  • 22 (&16) : suivi du paramère 0. écrit les caractères en mode normal, c'est-à-dire avec un fond. Si le paramètre 1 est utilisé, le fond ne sera pas altéré et le caractère sera ajouté. Il est ainsi facile d'obtenir n'importe quoi avec des caractères normaux.
  • 24 (&18) : interchange les encres de papier et de stylo (comme le contrôle X en Basic).
  • 25 (&19) : cette fonction a le même but que SYMBOL sous Basic car elle permet de redéfinir le caractère suivant avec les 8 autres. 9 octets passés en paramètres sont donc nécessaires au bon fonctionnement de celle-ci.
  • 26 (&1A) : ce code a, encore une fois, un équivalent en Basic qui est WINDOW. Seul le paramètre de numéro de fenêtre est manquant. Ainsi il faudra faire suivre cette fonction avec l'abscisse du point supérieur droit, son ordonnée, la largeur de la fenêtre et sa hauteur.
  • 28 (&1C) : voilà qui vous aidera à régler vos encres comme vous le désirez, tel INK sous Basic.
  • 29 (&1D) : border a lui aussi son représentant avec deux paramètres.
  • 30 (&1E) : (Home) équivaut à un LOCATE 1,1
  • 31 (&1F) : est le locate des codes de contrôle (à utiliser avec deux paramètres qui représentent la colonne et la ligne visées).

Après ce petit récapitulatif, il vous est possible, si un point n'est pas clair, d'essayer ces fonctions sous Basic, avec des PRINT CHR$(n). Vous verrez, cela marche du tonnerre. Bon. Maintenant, la technique. Pour faire une page écran telle que la nôtre, il faut calculer le nombre de caractères à écrire (qui vont deux par deux, voir les encadrés). Le résultat obtenu nous donne le nombre de fichiers à créer en plus de votre propre programme.. Il faut ensuite ouvrir le nombre de fichiers utiles à la construction de l'image, auquel est ajouté le nombre de programmes contenant votre application. Initialisez le mode écran choisi (dans l'exemple, le mode zéro grâce à la fonction 4), en écrivant directement dans le catalogue. Puis faites CAT. Ainsi, vous aurez l'ordre d'apparition des fichiers lors de la directorie. Il est ensuite simple de faire des LOCATES et de mettre les caractères à leur place pour obtenir le résultat désiré. Transformez le programme obtenu par les codes en équivalent Basic et vous comprendre? vite la manœuvre. Seuls des tests successifs vous permettront de réaliser le catalogue de vos rêves alors allez-y ; au boulot !

FIFININI

C'est avec tristesse que je vous abandonne à voire pauvre sort et que je vous dis à bientôt. Genre au mois prochain. En l'attente d'un courrier plus que dense.

Sined

----------------------------------------------------------------------------
Sect.: C1 Taille: 00512 ; Piste: 000 Nb sect.: 009
0009: 90 41 04 09 1D 99 09 0F 00 00 00 09 90 99 90 02 .A..............
0010: 02 09 90 00 99 09 90 90 09 00 00 00 00 00 00 09 ................
0029: 00 4B 1F 95 93 9F 01 53 41 08 0F 00 00 00 00 02 .K.....SA.......
0030: 03 00 00 00 00 00 00 00 09 09 99 99 90 00 00 09 ................
0040: 90 42 1F 07 93 9F 91 4C 55 08 0F 00 00 00 99 02 .B.....LU.......
0050: 04 00 00 99 99 90 09 09 09 09 00 00 00 90 00 00 ................
0060: 00 4C 1F 09 03 9F 91 54 20 08 9F 90 09 90 00 92 .L.....T .......
0070: 05 90 00 09 90 90 09 99 09 09 99 09 09 90 00 00 ................
0080: 99 43 1F 9B 03 0F 01 41 55 98 0F 09 00 00 00 02 .C.....AU.......
0090: 06 90 99 99 90 00 09 99 09 90 00 90 00 00 00 00 ................
00A0: 00 4D 1F 0D 03 0F 01 58 20 08 0F 00 99 99 00 92 .H.....X .......
00B0: 07 00 00 00 00 00 00 00 09 99 90 00 00 00 00 00 ................
00C0: 00 44 1F 05 06 0F 01 4C 45 08 0F 00 00 00 99 92 .D.....LE.......
00D0: 08 00 99 99 09 90 99 09 00 90 90 00 09 90 00 90 ................
00E0: 00 4E 1F 07 06 0F 01 43 54 08 0F 00 00 00 00 02 .N.....CT.......
03F0: 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
Mode: Edition Piste Ecriture: aanuelle Adresse: ;Page: 1/2
----------------------------------------------------------------------------
Sect.: C1 Taille: 00512 ; Piste: 000 Kb sect.: 009
0100: 00 45 1F 09 06 9F 91 45 55 98 9F 00 00 00 00 02 .E.....EU.......
0110: 0A 00 00 00 00 09 09 00 00 00 90 00 00 00 00 00 ................
0120: 00 4F 1F 0B 06 0F 01 52 53 98 0F 00 00 00 00 02 .0.....ES.......
0130: 0B 00 00 90 00 90 09 00 00 00 90 00 00 00 00 00 ................
0140: 00 46 1F 05 08 0F 01 44 27 08 9F 90 00 00 00 02 .F.....D'.......
0150: 0C 00 90 90 00 00 09 00 00 00 90 00 00 00 00 90 ................
0160: 00 50 1F 07 08 0F 01 41 4D 08 0F 00 00 00 00 02 .P.....AH.......
0170: 0D 00 09 00 00 90 00 00 00 00 00 00 00 00 00 00 ................
0180: 00 47 1F 99 99 0F 01 53 54 08 0F 00 00 00 09 92 .G.....ST.......
0190: 0E 00 00 00 00 00 00 00 00 00 00 90 00 00 00 00 ................
01A0: 00 51 1F 0B 99 0F 01 52 41 98 9F 09 90 00 00 02 .0.....RA.......
01B0: 0F 09 90 09 00 90 00 90 00 09 00 90 00 00 90 00 ................
01C0: 00 48 1F 0D 09 0F 01 44 29 08 9F 00 00 00 00 02 .H.....D .......
01D0: 10 00 09 99 00 90 00 90 00 00 90 90 00 00 00 09 ................
01E0: 00 52 IF 06 0C 0F 01 31 39 98 9F 00 00 00 00 02 .R.....10.......
01F0: 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
Mode: Edition Piste Ecriture: manuelle Adresse: ;Page: 2/2
----------------------------------------------------------------------------
Sect.: C2 Taille: 00512 ; Piste: 000 Nb sect.: 009
0000: 00 49 1F 08 0C 9F 01 30 25 08 0F 09 00 00 00 02 .1.....0%.......
0010: 12 00 00 00 09 00 00 00 00 00 00 00 00 00 00 00 ................
8020: 00 53 1F 0A 0C 0F 01 20 21 08 0F 00 00 09 09 02 .S..... !.......
0030: 13 00 00 00 00 00 00 00 00 90 90 00 00 00 90 90 ................
0040: 00 4A 45 55 20 20 20 20 20 42 41 53 00 00 00 02 .JEU BAS....
0050: 14 00 00 00 00 00 00 00 00 00 00 00 90 09 90 90 ................
0060: E5 E5 E5 E5 E5 E5 ES E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0070: E5 E5 E5 E5 ES E5 E5 E5 E5 ES E5 E5 E5 E5 E5 E5 ................
00B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ES E5 E5 ES ................
00B0: ES E5 E5 E5 E5 E5 E5 E5 ES E5 E5 E5 E5 E5 E5 E5 ................
00C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00E0: E5 E5 ES E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Mode: Edition Piste Ecriture: manuelle Adresse: ; Page: 1/2
----------------------------------------------------------------------------

Sined , A100% n°3 p40-41-42-43

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

Lien(s):
» Coding » Assembleur ACPC n°30 - L'homme du scroll mignon
» » Extended Catalogue (Amstrad Action)
» Applications » Disc Catalogue (Computing With the Amstrad)
» Coding » Assembleur ACPC n°25
» Coding » Assembleur ACPC n°35 - Dossier assembleur
» Coding » Bidouilles ACPC n°31 - 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 229 millisecondes et consultée 2522 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.