console

index
index principal

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
0KEY
1KEY?
2EKEY
3EKEY?
4EMIT
5EMIT?
6AT-XY
7CLS
8XY?
9B/W
10INSRTLN
11RMVLN
12DELLN
13WHTLN
14CR
15DELETE
16DELEOL
17BACKDEL
18UP
19DOWN
20LEFT
21RIGHT
22HOME
23END
24TOP
25BOTTOM
26TAB

index principal

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   
index
haut
index principal

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   
index
haut
index principal

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.
index
haut
index principal

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}.
index
haut
index principal

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.
index
haut
index principal

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.
index
haut
index principal

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.
index
haut
index principal

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  
index
haut
index principal

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.
index
haut
index principal

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   
index
haut
index principal

SPACE ( -- )

Imprime un espace sur la console.

arguments:
aucun   
retourne:
rien   
index
haut
index principal

SPACES ( n -- )

Imprime n espaces sur la console.

arguments:
n Nombre   d'espaces à imprimer.
retourne:
rien   
index
haut
index principal

DELLN ( -- )

Efface la ligne sur laquelle le curseur est situé.
Place le curseur au début de la ligne.

arguments:
aucun   
retourne:
rien   
index
haut
index principal

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   
index
haut
index principal

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   
index
haut
index principal

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  
index
haut
index principal

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   
index
haut
index principal

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  
index
haut
index principal

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  
index
haut
index principal

DELEOL ( -- )

Efface tous les caractères de la position du curseur jusqu'à la fin de la ligne.

arguments:
rien   
retourne:
rien  
index
haut
index principal

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  
index
haut
index principal

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  
index
haut
index principal

XY? ( -- u1 u2 )

Retourne la position du curseur texte.

arguments:
aucun   
retourne:
u1   Colonne {1..64}
u2   Ligne {1..24}
index
haut
index principal

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  
index
haut
index principal

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   
index
haut
index principal

WRAP ( f -- )

Active ou désactive le retour à la ligne automatique.

arguments:
f   Indicateur Booléen, VRAI wrap actif, FAUX inactif.
retourne:
rien   
index
haut
index principal

?WRAP ( -- f )

Vérifie si le mode retour automatique est actif.

arguments:
aucun   
retourne:
f   Indicateur Booléean VRAI si actif.
index
haut
index principal

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   
index
haut
index principal

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   
index
haut
index principal

UP ( -- )

Déplace le curseur d'une ligne vers le haut.

arguments:
aucun   
retourne:
rien   
index
haut
index principal

DOWN ( -- )

Déplace le curseur d'une ligne vers le bas.

arguments:
aucun   
retourne:
rien   
index
haut
index principal

LEFT ( -- )

Déplace le curseur d'un caractère vers la gauche.

arguments:
aucun   
retourne:
rien   
index
haut
index principal

Déplace le curseur d'un caractère vers la droite.

arguments:
aucun   
retourne:
rien   
index
haut
index principal

HOME ( -- )

Déplace le curseur au début de la ligne.

arguments:
aucun   
retourne:
rien   
index
haut
index principal

END ( -- )

Déplace le curseur à la fin de la ligne.

arguments:
aucun   
retourne:
rien   
index
haut
index principal

TOP ( -- )

Déplace le curseur dans le coin supérieur gauche de l'écran.

arguments:
aucun   
retourne:
rien   
index
haut
index principal

BOTTOM ( -- )

Déplace le curseur dans le coin inférieur droit de l'écran.

arguments:
aucun   
retourne:
rien   
index
haut
index principal

Index


haut
index principal