console
Description
Fonctions associées à la console.
Système de console basé sur des tables de vecteurs pour chaque
type de terminal. les tables contiennent le CFA de chaque fonction.
Il y a 2 terminaux, la console LOCAL constituée du clavier et du moniteur
branché à l'ordinateur ForthEx et la REMOTE qui utilise le port sériel RS-232
pour se connecter à un PC qui utilise à émulateur de terminal VT102.
On passe d'une console à l'autre en invoquant leur nom:
REMOTE \ l'interface utilisateur utilise le port sériel.
LOCAL \ l'interface utilisateur utilise le clavier et le moniteur de l'ordinateur.
Chaque console définie le code à exécuter pour chacune des fonction suivantes:
fonction# | nom |
0 | KEY |
1 | KEY? |
2 | EKEY |
3 | EKEY? |
4 | EMIT |
5 | EMIT? |
6 | AT-XY |
7 | CLS |
8 | XY? |
9 | B/W |
10 | INSRTLN |
11 | RMVLN |
12 | DELLN |
13 | WHTLN |
14 | CR |
15 | DELETE |
16 | DELEOL |
17 | BACKDEL |
18 | UP |
19 | DOWN |
20 | LEFT |
21 | RIGHT |
22 | HOME |
23 | END |
24 | TOP |
25 | BOTTOM |
26 | TAB |
LOCAL ( -- )
Transfert l'interface utilisateur à la console LOCAL.
La console LOCAL utilise le clavier et l'écran de l'ordinateur ForthEx.
arguments:
aucun
retourne:
rien
REMOTE ( -- )
Transfert l'interface utilisateur vers la console sérielle.
Cette interface utilisateur utilise un terminal ou émulateur VT102
pour contrôler l'ordinateur.
La commication est à 115200 bauds, 8 bits, 1 stop bit et pas de parité.
Le contrôle de flux est logiciel (XON | XOFF).
L'émulateur de terminal ne doit pas ajouter de LF (ASCII 10) lorsqu'il
reçoit un CR (ASCII 13).
L'ordinateur ForthEx n'implémente que partiellement le standard VT102
juste ce qui est nécessaire pour que la console REMOTE ait les même fonctionnalités
que la console LOCAL.
arguments:
aucun
retourne:
rien
LOCAL? ( -- f )
Retourne un indicateur Booléen VRAI si la console est en mode LOCAL.
arguments:
aucun
retourne:
f Indicateur Booléen vrai si console LOCAL.
KEY ( -- c )
Attend indéfiniement la réception d'un caractère de la console.
Les caractères invalides sont rejetés jusqu'à la réception
d'un caractère valide.
KEY n'accepte que les caractères graphiques {32..126}
Pour accepter tous les caractères envoyés par la console il faut
utiliser EKEY.
arguments:
aucun
retourne:
c Caractère reçu de la console dans l'intervalle {32..126}.
KEY? ( -- f )
Retourne vrai si un caractère valide est disponible.
S'il y a des caractères non valides dans la file ils
sont jetés et rendus indisponibles.
arguments:
aucun
retourne:
f Indicateur booléen VRAI s'il y a une touche disponible dans la file de réception.
EKEY ( -- c )
Réception d'un code clavier incluant les codes de
contrôles. Attend indéfiniment la réception d'un caractère.
arguments:
aucun
retourne:
c Code reçu.
EKEY? ( -- f )
Vérifie s'il y a un code dans la file de réception de la console.
Retourne un booléen indiquant l'état.
arguments:
aucun
retourne:
f Indicateur Booléen VRAI si un caractère est disponible dans la file.
EMIT ( c -- )
Imprime les caractères ASCII dans l'intervalle {32..126}
EMIT transmet tous les codes reçu sans filtre donc l'effet des codes
en dehors de l'intervalle {32..126} dépend de la console utilisée.
Pour la console LOCAL les codes 0..32 ont une représentation graphique
et les codes {128..255} sont les même mais en inverse vidéo.
Pour la console REMOTE celà peu dépendre de l'émulateur utilisé.
Par exemple, minicom pour les codes {0..31} affiche un rectangle avec de petits chiffres
à l'intérieur et pour les codes de {128..255} il affiche un losange avec un '?' à
l'intérieur.
arguments:
c Caractère à transmettre.
retourne:
rien
EMIT? ( -- f )
Vérifie si le terminal est prêt à recevoir. La console LOCAL retourne toujours VRAI.
La console remote retourne faux si le terminal a envoyé un XOFF et que l'ordinateur
ForthEx est en attente d'un XON.
arguments:
aucun
retourne:
f Indicateur Booléen vrai si la console est en état de recevoir.
AT-XY ( u1 u2 -- )
Positionne le curseur de la console aux coordonnées {u1,u2}.
arguments:
u1 Colonne {1..64}
u2 Ligne {1..24}
retourne:
rien
SPACE ( -- )
Imprime un espace sur la console.
arguments:
aucun
retourne:
rien
SPACES ( n -- )
Imprime n espaces sur la console.
arguments:
n Nombre d'espaces à imprimer.
retourne:
rien
DELLN ( -- )
Efface la ligne sur laquelle le curseur est situé.
Place le curseur au début de la ligne.
arguments:
aucun
retourne:
rien
RMVLN ( -- )
Supprime la ligne du curseur et décale toutes celles en dessus vers le haut.
Place le curseur à la marge de gauche.
arguments:
aucun
retourne:
rien
INSRTLN ( -- )
Décalle toutes les lignes à partir du curseur d'une position vers le bas.
Laisse la ligne du curseur vide avec le curseur à la marge de gauche.
arguments:
aucun
retourne:
rien
TYPE ( c-addr n+ -- )
Imprime une chaîne à l'écran de la console.
TYPE utilise EMIT donc ne filtre pas les caractères.
arguments:
c-addr adresse du premier caractère de la chaîne.
n+ Longueur de la chaîne.
retourne:
rien
ETYPE ( c-addr u -- )
Imprime à l'écran de la console une chaîne qui réside en mémoire EDS.
ETYPE utilise EMIT donc ne filtre pas les caractères.
arguments:
c-addr Adresse du premier caractère de la chaîne.
u Longueur de la chaîne.
retourne:
rien
DELETE ( -- )
Supprime le caractère à la position du curseur. Les caractères à droite
sont décalés vers la gauche d'une position.
arguments:
rien
retourne:
rien
BACKDEL ( -- )
Déplace le curseur d'un caractère à gauche et supprime le caractère. Les
caractères à droite sont décalés vers la gauche d'une position.
arguments:
rien
retourne:
rien
DELEOL ( -- )
Efface tous les caractères de la position du curseur jusqu'à la fin de la ligne.
arguments:
rien
retourne:
rien
CR ( -- )
Renvoie le curseur à la marge gauche de la ligne suivante.
Le texte n'est pas modifié il s'agit simplement d'un déplacement du curseur.
arguments:
rien
retourne:
rien
CLS ( -- )
Efface l'écran de la console.
Le standard ANSI Forth utilise le mot PAGE pour cette fonction mais CLS me
semble plus famillier.
arguments:
rien
retourne:
rien
XY? ( -- u1 u2 )
Retourne la position du curseur texte.
arguments:
aucun
retourne:
u1 Colonne {1..64}
u2 Ligne {1..24}
B/W ( f -- )
Détermine si les caractères s'affichent noir sur blanc ou l'inverse
Si l'indicateur Booléen 'f' est vrai les caractères s'affichent noir sur blanc.
Sinon ils s'affichent blanc sur noir (valeur par défaut).
arguments:
f Indicateur Booléen, inverse vidéo si vrai.
retourne:
rien
WITHELN ( n -- )
Imprime une ligne blanche et laisse le curseur au début de celle-ci
À la sortie le mode vidéo est inversé, i.e. noir/blanc.
arguments:
n Numéro de la ligne {1..24}
retourne:
rien
WRAP ( f -- )
Active ou désactive le retour à la ligne automatique.
arguments:
f Indicateur Booléen, VRAI wrap actif, FAUX inactif.
retourne:
rien
?WRAP ( -- f )
Vérifie si le mode retour automatique est actif.
arguments:
aucun
retourne:
f Indicateur Booléean VRAI si actif.
SCROLL ( f -- )
Active ou désactive le défilement de l'écran lorsque le curseur
atteint la fin de celui-ci, i.e. position {64,24}
Ce blocage du défilement ne concerne que EMIT.
arguments:
f Indicateur Booléen, VRAI définelement actif, FAUX inactif
retourne:
rien
TAB ( -- )
Avance le curseur texte à la prochaine colonne texte.
Par défaut les colonnes sont de 4 caractères de largeur.
arguments:
aucun
retourne:
rien
UP ( -- )
Déplace le curseur d'une ligne vers le haut.
arguments:
aucun
retourne:
rien
DOWN ( -- )
Déplace le curseur d'une ligne vers le bas.
arguments:
aucun
retourne:
rien
LEFT ( -- )
Déplace le curseur d'un caractère vers la gauche.
arguments:
aucun
retourne:
rien
RIGHT ( -- )
Déplace le curseur d'un caractère vers la droite.
arguments:
aucun
retourne:
rien
HOME ( -- )
Déplace le curseur au début de la ligne.
arguments:
aucun
retourne:
rien
END ( -- )
Déplace le curseur à la fin de la ligne.
arguments:
aucun
retourne:
rien
TOP ( -- )
Déplace le curseur dans le coin supérieur gauche de l'écran.
arguments:
aucun
retourne:
rien
BOTTOM ( -- )
Déplace le curseur dans le coin inférieur droit de l'écran.
arguments:
aucun
retourne:
rien
Index