Pilote
des afficheurs matriciels de l'émulateur
Instructions
Utilisation
Exemple
Principe
Si les afficheurs matriciels
de l'émulateur sont des registres adressables dans
la zone des registres
d'extension du coeur FORTH décrit comme suit:
290 (0x122) colonne 0 (à gauche)
291 (0x123) colonne 1
...
299 (0x12B) colonne 9 (à droite)
lecture/écriture:
bits[15..8] = 0x00
bits[7..0] = 0, point en bas, ..., point en haut
point allumé si 1
Le pilote va permettre de faciliter l'utilisation de ces registrse en
se
servant du noyau temps réel. Le principe consiste
à
permettre au développeur de n'avoir qu'à
gérer qu'une simple chaine de 2 caractères
codés en ASCII.
Instructions
- CW_MATRICE
290
Numéro du
registre d'extension de la première des 10 colonnes des 2
afficheurs.
adr_chr MATRICE -
Affichage de 2
caractères ASCII.
adr_chr est l'adresse du premier des 2 caractères
codés en ASCII (8 bits par caractère).
Utilisation
Le
pilote n'étant pas intégré au noyau,
il fau
d'abord compiler le fichier source
matriciels.txt avant de pouvoir l'utiliser.
La séquence suivante correspond à l'affichage de
"12":
" 12"
STRING S_NOMBRE
S_NOMBRE 1+ MATRICE
Le pilote utilise une table permettant de transformer chacun des 2
codes ASCII en un caractère affichable (0 à 127).
Exemple
Le
programme suivant installe une tâche qui affiche tous les
caractères possibles:
DECIMAL
"
" STRING S_MATRICE ( 2
espaces )
TACHE:
T_MATRICIELS
S_MATRICE 1+ DUP MATRICE DUP C@
IF
( Decalage des caracteres vers la gauche )
DUP >R 1+ C@ DUP R@ C! DUP 127 = OVER 0= OR
IF
(
Effacement progressif de la chaine lorsque le caractere
127 vient d'etre affiche )
DUP XOR
ELSE
1+
THEN
R> 1+ C!
ELSE
( Initialisation de la chaine et retrait de la tache )
2 32 FILL T_MATRICIELS T_RETIRE
THEN
;
500
T_MATRICIELS 32768 OVER T_AJOUTE T_PERIODE
Voici
une vidéo:
