Obligement - L'Amiga au maximum

Jeudi 29 juin 2017 - 16:22  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Soutien

N'hésitez pas à soutenir le projet Obligement



Contact

David Brunet

Courriel

 


En pratique : Les séquences "escape" et l'Amiga
(Article écrit par Pierre Ardichvili et extrait d'A-News (Amiga News) - avril 1989)


Les séquences "escape" (d'échappement) sont utiles pour obtenir des effets spéciaux à l'écran ou sur l'imprimante. Leur utilisation sur l'Amiga est soumise à quelques contraintes que nous nous proposons de décrire ici.

Tout d'abord, cet article visant des utilisateurs non programmeurs, redéfinissons rapidement les séquences escape.

C'est quoi, les séquences escape ?

Lorsqu'on envoie une suite de caractères à une imprimante, ce qui part en fait de l'ordinateur sont des octets représentant ces caractères. Initialement, ces octets comprenaient un bit de parité, il y avait donc sept bits disponibles pouvant représenter 128 caractères différents. Ces caractères ont été normalisés par la convention américaine ASCII, et vous trouverez normalement toujours une table ASCII dans un des appendices au fond du manuel de votre imprimante.

Le jeu de départ de 128 caractères comprenait les lettres de l'alphabet, en majuscules et minuscules, les chiffres, les signes de ponctuation, quelques symboles comme "©" et "&", les 31 premiers caractères étant destinés soit à gérer le protocole de transmission entre l'ordinateur et l'imprimante comme par exemple le caractère 22 (sync) ou le caractère 6 (ack), soit à commander des fonctions spéciales comme le caractère 13 (CR, ou retour chariot), le caractère 12 (FF, form feed - saut de page), les caractères 14 et (SI, SO - shift-in, shift-out) servant à mettre en oeuvre un second jeu de caractères dit "altenate" et à revenir au jeu de caractères principale. Ces 32 premiers caractères peuvent être envoyés en combinant la touche "Ctrl" et une autre touche du clavier.

Fiabilité

Par la suite, la fiabilité des circuits augmentant, on a pu se passer du bit de parité et disposer de 256 caractères, ce qui a permis de transmettre, entre autres, tous les caractères accentués étrangers à la langue anglaise.

Cependant, à l'époque de la transmission à sept bits, il ne restait plus de caractères disponibles pour notifier à l'imprimante d'avoir à imprimer en italique, ou en caractères gras, ou de souligner, ou de changer de police de caractères, etc.

On imagina donc d'utiliser le caractère 27 (ESC, escape, ou échappement) pour dire à l'imprimante : "attention, ce qui suit, et jusqu'à nouvel ordre, n'est plus du texte à imprimer, mais une commande régissant votre comportement". En consultant le manuel de votre imprimante, vous verrez en détail comment ces séquences sont faites, et aussi qu'il y en a des types très divers. Bien entendu, les constructeurs utilisent pour leurs séquences escape tantôt une syntaxe commune, tantôt leur syntaxe propre.

C'est la jungle...

Il faut donc faire très attention et respecter scrupuleusement cette syntaxe, en particulier ne pas confondre majuscules et minuscules, et, piège classique, la lettre "l" minuscule et le chiffre "1". Il est aussi mauvais pour la tension artérielle d'imaginer naïvement qu'une même séquence escape produira le même effet sur deux imprimantes de modèles différents d'un même constructeur.

Vous constaterez, de plus, que l'ensemble des fonctions d'impression d'une imprimante est un mélange fraternel, non seulement de séquences escape de diverses sortes, mais aussi de caractères pris parmi les 32 premiers de la liste ASCII, c'est-à-dire de la forme "Ctrl-0" par exemple.

Voici deux exemples à titre d'illustration :

Sur l'Epson FX-85 (matricielle à aiguilles classique)
  • Programmer l'impression condensée : SI ou Ctrl-0.
  • Arrêter l'impression condensée : DC2 ou Ctrl-R.
  • Longeur de la page en lignes : EscCn.
  • Programmer l'impression en italique : Esc4.
Sur la Hewlett-Packard PaintJet (couleur, à jet d'encre)
  • Programmer l'impression condensée à 96 caractères par ligne : Esc&k4S.
  • Programmer l'impression condessée à 144 caractères par ligne : Esc&k2S.
  • Arrêter l'impression condensée : Esc&k0S.
  • Longeur de la page en lignes : Esc&1nnP.
  • Déclencher l'autotest : Escz.
Comme vous le voyez, c'est la jungle.

Avantage Amiga - le tiroir "Devs"

Normalement, c'est le logiciel de traitement de texte, ou le logiciel graphique, qui envoie à l'imprimante les bonnes séquences, via le pilote de l'imprimante. Sur l'Amiga, nous avons la chance de pouvoir les mettre, au fur et à mesure qu'ils sont disponibles, dans notre tiroir "devs", ce qui nous donne une certaine indépendance vis-à-vis du choix initial du concepteur du logiciel.

Mais nous sommes tous un peu bidouilleurs et nous aimons la difficulté. Prenons un exemple, la commande CLI :

dir > prt: dh0: opt a

...causera l'impression de l'arborescence complète des répertoires, sous-répertoires et fichiers du disque dur. Dans mon cas, ceci représente 800 lignes, soit 14 pages normales de 60 lignes.

Je préfère faire cette impression en petits caractères, à raison de 80 lignes par page. Ceci réduit le listing de quatre pages, cela vaut absolument la peine, tant d'un point de vue de l'économie que de celui de la consultation du document.

Pour cela, il me faut envoyer à l'imprimante, à partir du CLI, deux séquences escape avant de taper la commande ci-dessus.

Et le BASIC ?

Je peux souhaiter faire la même chose dans un programme écrit en BASIC, par exemple. Or, il se fait que les concepteurs de l'Amiga, pour une raison que j'ignore, ont voulu interdire à l'utilisateur d'envoyer à l'imprimante une séquence escape par la voie la plus simple. C'est peut-être pour éviter l'envoi involontaire du caractère "Esc" à l'imprimante, et les choses inattendues qui peuvent se passer en fonction des caractères qui suivent.

Transmission des séquences escape en BASIC

En BASIC, le caractère "Esc" se représente par CHR$(27). Pour mettre par exemple l'imprimante HP Paintjet en mode 144 caractères par ligne, l'instruction serait :

LPRINT CHR$(27)+"&k2S"

Si vous essayez ceci, vous verrez que l'imprimante imprimera :

&k2S

...ce qui montre qu'elle n'a pas reçu le caractère "Esc", ce qui est confirmé en mettant un analyseur de protocole sur la ligne.

L'astuce est d'avoir recours à l'envoi des caractères au port auquel est connectée l'imprimante : dans le cas du port série, cela donnera :

OPEN SER: FOR OUTPUT AS 1
PRINT #1,CHR$(27)+"&k2S"
CLOSE #1

Et ça marche.

Au passage, un grand merci aux amis correspondants de la rubrique "Astuces" de DEEP, qui m'ont mis sur la voie.

Transmission des séquences escape à partir du CLI

Le principe est le même : naturellement, on serait tenté d'écrire :

ECHO > PRT: "^[&k2S"

...alors que ce qui marche est :

ECHO > SER: "^[&k2S"

Ceux d'entre vous qui pourraient retrouver le numéro de septembre-octobre 1986 d'Amiga World y trouveront en page 110 un intéressant article sur les séquences escape, dans lequel l'auteur donne une méthode de transmission des séquences escape qui permet de s'affranchir du style particulier au constructeur de l'imprimante en passant par le device PRT:. Les séquences escape transmises à ce device sont ensuite traduites par le pilote de l'imprimante dans le standard approprié. J'attire l'attention du lecteur sur le fait que ceci n'est valable qu'à partir d'un langage de programmation, et pas à partir du CLI. La commande...

ECHO > PRT:

...refuse absolument de transmettre le caractère "Escape", il faut passer par SER: ou PAR:. La syntaxe générale est :

ECHO "*e[s;f;bm"

où :

*e correspond au caractère "Esc".
[ indique que c'est une séquence modifiant l'affichage.
s (style) est un des nombres suivants : 0 (normal), 1 (caractères gras), 3 (italique), 4 (souligné) et 7 (vidéo inverse).

Et on peut combiner plusieurs codes :

f (foreground) est un nombre qui définit la couleur de l'avant-plan, c'est-à-dire du texte : 30 (la couleur par défaut), 31 (blanc), 32 (la couleur complémentaire, noir pour les couleurs normales du Workbench), 33 (rouge).
b est un nombre qui définit la couleur de l'arrière-plan, c'est-à-dire du fond sur lequel s'inscrit la ligne de texte : 40 (la couleur par défaut), 41 (blanc), 42 (la couleur complémentaire), 43 (rouge).

Par exemple :

ECHO "*e[1;4;33;41m Bonjour"

...écrira "Bonjour" en caractères gras, soulignés, en rouge sur fond blanc.

séquences escape

Je vous laisse le soin d'essayer toutes les combinaisons et de trouver pourquoi certaines sont idiotes.

Pour revenir au mode normal, n'oubliez pas, à la fin de votre commande, de mettre :

"*e[0m"

...en vertu du principe selon lequel l'effet d'une séquence escape reste en effet jusqu'à nouvel ordre (réinitialisation, fermeture de la fenêtre, ou autre séquence escape).

Ces séquences escape de contrôle d'écran sont intéressantes lorsque l'on veut mettre en relief des messages devant attirer l'attention.

Voilà ! C'était peut-être un peu sec, mais moyennant une petite demi-heure d'exercices au clavier de votre inséparable et irremplaçable Amiga, vous maîtriserez une possibilité de plus de cette passionnante bécane.

Bon amusement !


[Retour en haut] / [Retour aux articles]