J’ai un peu de mal à comprendre le système des zones, et (comme d’hab) je ne trouve pas la section en question de la STUM1B très claire.
Si je comprends bien, quand je veux changer la couleur du fond, je dois envoyer un espace pour qu’elle soit prise en compte ? Cela crée une « zone » ou la couleur de fond est prise en compte. Par contre pour la couleur d’avant plan ce n’est pas le cas, elle est prise en compte immédiatement.
Et c’est la même chose pour le soulignement.
Du coup, comment fait on pour écrire quelque-chose comme ça:
texte souligné.
?
Notez le point final qui n’est pas souligné. L’arrêt du soulignement n’est pas pris en compte parce que je n’ai pas inséré d’espace.
Le mieux, pour comprendre « comment ça marche » est de commencer par potasser la doc de l’EF9345. Là dedans, tu comprendras ce qu’est capable de faire le processeur vidéo du Minitel 1b et les limitations inhérentes à son encodage interne (attributs série ou pas, etc).
Pour répondre à la question de ton exemple (un point non souligné juste après un texte souligné).
Normalement, non, ce n’est pas possible
Premier cas particulier : si le ‹ é › de souligné est en colonne 40, le ‹ . › qui le suivra sera en colonne 1 et ne sera pas souligné !
Second cas particulier (avec un M2 seulement): Rien ne t’empêche de redéfinir le caractère ‹ . › en DRCS, qui pourra alors ne pas être souligné - dans la pratique, bof !
Pas forcément ‹ simple › mais pas sorcier non plus.
En mode texte, lorsqu’au moins un ‹ attribut série › a été transmis au préalable, le premier caractère ‹ espace › qui le suit (pas forcément immédiatement) fait office de/est un délimiteur - Le(s) attribut(s) série reçus au préalable sont « validés » depuis ce délimiteur jusqu’au délimiteur suivant (ou la fin de ligne).
Un effacement d’écran [ou de ligne(s)] remplit la zone de délimiteurs (attributs fond noir, non souligné, non masqué).
En mode graphique [alphamosaique], tous les caractères sont délimiteurs, le soulignement distingue le jeu [joint/disjoint] - La couleur de fond est immédiatement prise en compte. La taille de caractères et l’inversion ne font pas sens.
Aucune idée du comportement du masquage en graphique !
Tu veux dire que pour effacer l’écran, je le remplit d’espace ?
car dans la stum p.86 il est dit que l’effacement de l’écran se fait avec un caractère semi-graphique (0x5F).
Je dis juste ce que dit le STUM : L’effacement d’une ligne (ou de l’écran entier) consiste à remplir la mémoire écran de délimiteurs ‹ fond noir - non souligné - non masqué ›. Visuellement, celà correspondrait à des espaces ou à des pavés semi-graphiques sans aucun ‹ pixel › allumés.
Attention, au niveau matériel, le caractère d’attribut n’est pas un espace (ASCII 32), mais un caractère d’effacement arrière, le seul pouvant supporter les attributs en mode « short fixed ».
En alphamosaique, c’est pas l’attribut soulignement dans le protocole qui définit si on est joint ou disjoint?
J’ai remarqué une chose mais je ne suis pas sur de ce fonctionnement,
Dans une page videotex qui s’affiche, lorsque par exemple en bas de page,
il positionne le cursor en haut de page par exemple sur x=31 et y=4, et que dans cette position
la couleur d’écriture était blanc, il garde cette couleur pour écrire,
Je dis cela car dans MiEdit, dans une page on a
positionnement du curseur en haut
foreground a bleu,
invert on
ce qui donne un fond bleu avec une écriture blanche
et l’écriture est blanche alors que le fond était noire, mais la couleur de l’écriture en haut est blanche.
J’en déduit qu’il faut mémoriser la dernière couleur d’écriture et de fond ou les attributs pour chaque rangée.
A chaque caractère qui est écrit en mode G0, on mémorise les attributs qui était utilisé, pour la rangée en question mais pas pour toutes les cases 80x25
Ou bien a chaque changement d’attribut, dès qu’il y a un Set foreground color ou Set background color, on le mémorise pour cette rangée, un byte d’attribut comme mentionné dans les spec EF9345
c’est bien ca ?