Les instructions sont présentées
de la manière suivante:
- les paramètres d'entrée
pris sur la pile des données sont en vert (une absence de
paramètre est signalé par le caractère "-"),
- le nom de l'instruction est en rouge,
- les paramètres de sortie
placés sur la pile des données sont en bleu (une absence de paramètre est signalé
par le caractère "-"),
- la description de l'instruction
est en noir et en italique.
Tous les paramètres sont des
nombres de 32 bits sauf "flottant" représentan
un nombre réel codé en IEEE double précision
(64 bits, le mot de poid faible est empilé en premier).
Lorsque plusieurs paramètres sont indiqués, ils
sont séparés par une virgule. Le paramètre
le plus à gauche est le premier déposé dans
la pile et celui le plus à droite constitue le sommet de
la pile.
n DUP n, n
Empilement de la copie du nombre au somme
de la pile
n DROP -
Suppression du nombre au sommet de la pile
n SWAB m
Permutation des 16 bits de poids faibles
avec les 16 bits de poids forts de n
n 1, n 2
NIP
n 2
Suppression du deuxième nombre de
la pile
n 1, n 2
TUCK
n 2, n 1, n 2
Empilement de la copie du nombre au somme
de la pile au troisième niveau
n 1, n 2
SWAP
n 2, n 1
Permutation des 2 nombres au sommet de la
pile
n 1, n 2
OVER
n 1, n 2, n 1
Empilement de la copie du nombre se trouvan
au 2ième rang de la pile
n 1, n 2,
n 3 ROT
n 2, n 3, n 1
Rotation des 3 nombres au sommet de la pile
profondeur
PICK
n
Empilement de la copie du nombre à
la profondeur donnée au sommet de la pile
"1 PICK" équivalent à "DUP"
"2 PICK" équivalent à "OVER"
valeur, profondeur
POKE
-
Modification du nombre à la profondeur
donnée dans la pile avec la valeur donnée
profondeur
ROLL
-
Rotation des nombres au sommet de la pile
selon la profondeur donnée
"2 ROLL" équivalent à "SWAP"
"3 ROLL" équivalent à "ROT"
n ?DUP n ou n,n
Empilement de la copie du nombre au somme
de la pile s'il n'est pas nu
n >R
-
Transfert du sommet de la pile des données
vers la pile de retour
(INTERDIT en mode interprétation)
- R>
n
Transfert du sommet de la pile de retour
vers la pile des données
(INTERDIT en mode interprétation)
- R@ n
Empilement de la copie du sommet de la pile
de retour sur la pile des données
adresse
2@
n
Lecture du mot de 32 bits pointé par
adresse
adresse
@
n
Lecture du mot de 16 bits pointé par
adresse
Les 16 bits de poids forts de n prennent la valeur du bit de poids
fort du mot lu
adresse
C@
n
Lecture de l'octet (8 bits) pointé
par adresse
Les 24 bits de poids forts de n prennent la valeur du bit de poids
fort de l'octet lu
numéro
CW@
n
Lecture du mot d'extension (16 bits) pointé
par numéro.
Les 16 bits de poids forts de n prennent la valeur du bit de poids
fort du mot lu
n, adresse
2!
-
Ecriture du mot n (32 bits) dans adresse
n, adresse
!
-
Ecriture du mot n (16 bits de poids faibles)
dans adresse
n, adresse
C!
-
Ecriture de l'octet n (8 bits de poids faibles)
dans adresse
n, numéro
CW!
-
Ecriture de la valeur n (16 bits de poids
faibles) dans le registre d'extension pointé par numéro
n 1, n 2
+
(n 1 + n 2)
Addition
n NEGATE
-n
Valeur opposée (complémen
à 2)
n 1, n 2
-
(n 1 - n 2)
Soustraction
n 2* n*2
Multiplication rapide par 2
n 4* n*4
Multiplication rapide par 4
n 2/ n/2
Division rapide par 2
n 4/ n/4
Division rapide par 4
n 1, n 2
<
booléen
Test si nombre 1 est strictement inférieur
à nombre 2 en signé
n 1, n 2
=
booléen
Test si nombre 1 est égal à
nombre 2
n 1, n 2
>
booléen
Test si nombre 1 est strictement supérieur
à nombre 2 en signé
n 0<
booléen
Test si nombre est négatif
n 0= booléen
Test si nombre est nul
n 0>
booléen
Test si nombre est strictement positif
n 1, n 2
U<
booléen
Test si nombre 1 est inférieur à
nombre 2 en non signé
n NOT booléen
Equivalent à 0=
n 1, n 2
U*
(n 1 * n 2)
Multiplication non signée
Le résultat ne doit pas dépasser le format de 32
bits
n 1, n 2
*
(n 1 * n 2)
Multiplication
Le résultat ne doit pas dépasser la format de 32
bits
n 1, n 2
U/MOD
reste(n 1 / n 2), quotient(n 1 /
n 2)
Reste et quotient de la division entière
non signée de nombre 1 par nombre 2
Le résultat intermédiaire de la multiplication es
sur 64 bits
n 1, n 2,
n 3 U*/MOD reste((n 1 * n
2)/ n 3), quotient((n 1 * n 2)/ n 3)
Reste et quotient de la division entière
non signée par nombre 3 de la multiplication non signée
de nombre 1 par nombre 2
Le résultat intermédiaire de la multiplication es
sur 64 bits
n 1, n 2,
n 3 */MOD
reste((n 1 * n 2)/ n 3), quotient((n
1 * n 2)/ n 3)
Reste et quotient de la division entière
par nombre 3 de la multiplication de nombre 1 par nombre 2
Le résultat intermédiaire de la multiplication es
sur 64 bits
n 1, n 2
/MOD
reste(n 1 / n 2), quotient(n 1 /
n 2)
Reste et quotient de la division entière
de nombre 1 par nombre 2
n 1, n 2
/
(n 1 / n 2)
Division avec arrondi
n 1, n 2
MOD
reste(n 1 / n 2)
Reste de la division entière de nombre
1 par nombre 2
n 1, n 2,
n 3 */
(n 1 * n 2)/ n 3
Division entière par nombre 3 de la
multiplication de nombre 1 par nombre 2
Le résultat intermédiaire de la multiplication es
sur 64 bits
n SQRT m
Racine carrée du nombre n toujours
considéré comme positif sur 32 bits
n 1, n 2
MAX
max(n 1, n 2)
Maximum des nombres 1 et 2
n 1, n 2
MIN
min(n 1, n 2)
Minimum des nombres 1 et 2
n ABS abs(n)
Valeur absolue
n 1, n 2
AND
(n 1 and n 2)
ET logique
n 1, n 2
OR
(n 1 or n 2)
OU logique
n 1, n 2
XOR
(n 1 xor n 2)
OU Exclusif logique
n, d ASH m
Décalage arithmétique de n
d fois à gauche si d est positif et à droite dans
le cas contraire
n, d LSH m
Décalage logique de n d fois à
gauche si d est positif et à droite dans le cas contraire
n, d ROL m
Rotation de n d fois à gauche si d
est positif et à droite dans le cas contraire
n COM m
Inversion bit à bit (complémen
à 1)
n, adresse
+C!
-
Addition du mot n au mot pointé par
adresse sur 8 bits
n, adresse
-C!
-
Soustraction du mot n au mot pointé
par adresse sur 8 bits
n, adresse
+!
-
Addition du mot n au mot pointé par
adresse sur 16 bits
n, adresse
-!
-
Soustraction du mot n au mot pointé
par adresse sur 16 bits
n, adresse
+2!
-
Addition du mot n au mot pointé par
adresse sur 32 bits
n, adresse
-2!
-
Soustraction du mot n au mot pointé
par adresse sur 32 bits
adresse,
n, octet FILL -
Remplissage de la mémoire avec n fois
la valeur octet à partir de adresse
a 1, a 2,
n CMOVE
-
Copie de n octets (8 bits) de l'adresse 1
vers l'adresse 2
a 1, a 2,
n MOVE
-
Copie de n mots de 16 bits de l'adresse 1
vers l'adresse 2
a 1, a 2,
n 2MOVE
-
Copie de n mots de 32 bits de l'adresse 1
vers l'adresse 2
- INTERRUPT_VECTORS
adresse
Adresse des vecteurs d'interruption
- S_WORD
adresse
Adresse du tampon ASCII géré
par l'instruction "WORD"
- S_FORMAT
adresse
Adresse du tampon ASCII géré
par les instructions de sortie formattée
- S_TAMPON
adresse
Adresse du tampon ASCII de l'interpréteur/compilateur
- S_STRING
adresse
Adresse du tampon ASCII géré
par l'instruction "STRING"
- M_SOURIS
adresse
Adresse du tampon de mémorisation
de la zone pointée par la souris
- INPUT_FILE
adresse
Adresse de la file d'entrée du terminal
- OUTPUT_FILE
adresse
Adresse de la file de sortie du terminal
- RS232_RECEIVE_FILE
adresse
File de réception du lien série
- RS232_TRANSMIT_FILE
adresse
File d'émission du lien série
- KEYBOARD_FILE
adresse
File de mémorisation des touches du
clavier
- PAD adresse
Variable contenant l'adresse du fichier ASCII
en cours de compilation (instruction "LOAD")
- >IN
adresse
Variable contenant l'index de compilation
du fichier ASCII précédent
- MEM_DEPTH
adresse
Variable gérée par l'instruction
"DEPTH"
- MEM_HERE
adresse
Variable contenant la valeur de "HERE"
- ADR_CREATE
adresse
Variable gérée par l'instruction
"CREATE"
- START
adresse
Variable contenant l'adresse de la dernière
instruction compilée
- TEMPS
adresse
Variable contenant la valeur d'un compteur
tournant (32 bits) incrémenté toutes les millisecondes
par le noyau temps réel
- TACHE
adresse
Adresse du début de la liste chaînée
des tâches du noyau temps réel
- 68681_IT+
adresse
Adresse du vecteur permettant de compléter
le programme d'interruption du circuit d'interface 68681
- FPGA_IT+
adresse
Adresse du vecteur permettant de compléter
le programme d'interruption du FPGA
- MEMOIRE_ADRESSE
adresse
Adresse du début de la mémoire
allouable dynamiquement.
Cette variable est réservée au système
- MEMOIRE_INDEX
adresse
Adresse utilisée dans la gestion de
la mémoire allouable dynamiquement.
Cette variable est réservée au système
- MEMOIRE_TELEC
adresse
Variable contenant l'adresse du tampon de
téléchargement
- MEMOIRE_FLASH
adresse
Variable donnant l'adresse du contenu du
bloc initial en mémoire vive
- FENETRE
adresse
Variable donnant l'adresse de la liste chaînée
des descripteurs Variable giving the address of the list chained
of window descriptors de fenetres
- MOTIF_SOURIS
adresse
Variable donnant l'adresse du motif de la
souris dans la fenetre active
- FOND_SOURIS
adresse
Variable donnant l'adresse du motif couran
de la souris
- TAPISSE
adresse
Variable donnant l'adresse du programme d'affichage
du fond de l'écran
- FICHIER_CHEMIN
adresse
Variable donnant l'adresse de la chaine de
caractères contenant chemin courant en mémoire vive
- STOP_FORTH
adresse
Variable donnant l'adresse d'un programme
d'arrêt de processus FORTH (ABORT par exemple)
- SYSTEMES_FICHIERS adresse
Variable donnant l'adresse de la liste des
descripteurs des systèmes de fichier installés
- EOLN adresse
Variable indiquant si elle est différente
de 0 que l'instruction "WORD" a rencontré un
caractère de fin de ligne
- EOF adresse
Variable indiquant si elle est différente
de 0 que l'instruction "WORD" a rencontré un
caractère de fin de fichier
- BASE adresse
Variable contenant la valeur de la base numérique
courante
- STATE
adresse
Variable indiquant si elle est différente
de 0 que l'on se trouve en mode compilation (sinon interpétation)
- ERROR
adresse
Variable pointant le descriptif des erreurs
de compilation
- T_SUSPEND
adresse
Variable permettant de suspendre le noyau
temps réel (si différente de 0)
- PRIORITE
adresse
Variable indiquant le niveau de priorité
courant au noyau temps réel
- ECRAN
adresse
Adresse pointant les limites de l'écran
graphiques en 16 bits.
Exemple pour écran VGA de 640x480: 0,0,639,479
- LIMITES
adresse
Adresse pointant les limites de la zone d'affichage
en 16 bits.
Ces coordonnées sont toujours bornées par celles
de ECRAN, exemple: 10,45,300,249
- G_SUSPEND
adresse
Variable permettant de suspendre l'affichage
graphique (si différente de 0)
- X_SOURIS
adresse
Variable contenant l'abcisse de la souris
- Y_SOURIS
adresse
Variable contenant l'ordonnée de la
souris
- COPIE_IMR
adresse
Variable interne réservée aux
instructions de gestion du circuit d'interface 68681
- I2C_OCCUPE
adresse
Variable interne réservée aux
instructions de gestion du lien I2C
- FLASH_OCCUPE
adresse
Variable contenant l'état d'occupation
de la mémoire FLASH
- FLASH_ECRITURE
adresse
Variable indiquant si un fichier est en cours
d'écriture
- TEMPS_TELEC
adresse
Variable interne réservée à
la gestion du téléchargement
- DATA_STACK
adresse
Adresse de la pile des données
- RETURN_STACK
adresse
Adresse de la pile de retour
- DICTIONNAIRE
adresse
Adresse de la table d'index des instructions
(classement par ordre alphabétique)
- DEPTH
profondeur
Empilement de la profondeur de la pile des
données
- RDEPTH
profondeur
Empilement de la profondeur de la pile de
retour
- HERE adresse
Dépose sur la pile l'adresse de compilation
adresse
>HERE
-
Initialise l'adresse de compilation
n C, -
Compilation de l'octet n (8 bits)
L'adresse de compilation ("HERE") est incrémentée
de 1
ATTENTION:
il faut toujours maintenir "HERE" pair
ajoutez une instruction de ce type avec la valeur "0"
si leur nombre est impair
n , -
Compilation du mot n (16 bits)
L'adresse de compilation ("HERE") est incrémentée
de 2
n 2, -
Compilation du mot n (32 bits)
L'adresse de compilation ("HERE") est incrémentée
de 4
n IF - instructions
- THEN -
Les instructions entre "IF" e
"THEN" sont exécutées si n est différen
de 0
n IF - instructions
1
- ELSE - instructions 2
- THEN -
Si n est différent de 0, seules les
instructions 1 sont exécutées, sinon ce sont les
instructions 2 qui sont exécutées
n CASE -
m OF - instructions 1
- ENDOF -
instructions 2
- ENDCASE -
Si m est égal à n , seules
les instructions 1 sont exécutées, sinon ce son
les instructions 2 qui sont exécutées. Plusieurs
séquences "OF", "ENDOF" peuvent être
enchaînées.
- BEGIN
- instructions
n UNTIL -
Les instructions entre "BEGIN"
et "UNTIL" sont réexécutées tan
que n est nul
- BEGIN
- instructions
1
n WHILE - instructions 2
- REPEAT -
Les instructions 1 et 2 sont entre "BEGIN"
et "REPEAT" sont réexécutées tan
que n est différent de 0
valeur max,
valeur min DO - instructions
- LOOP -
Structure permettant exécutant les
instructions à chaque incrémentation d'un indice
initialisé à la valeur min et autant de fois qu'il
est strictement inférieur à la valeur max
L'indice est incrémenté et testé par l'instruction
"LOOP"
valeur max,
valeur min DO - instructions
n +LOOP -
Structure permettant exécutant les
instructions à chaque incrémentation d'un indice
initialisé à la valeur min et autant de fois qu'il
est strictement inférieur à la valeur max
L'indice est incrémenté par la valeur n et testé
par l'instruction "+LOOP"
Les instructions "I", "J", "K" e
"LEAVE" sont aussi utilisables dans cette structure.
n LITERAL
-
Compilation du nombre n (32 bits) dans la
definition d'une instruction
- I indice
Dépose sur la
pile des données la valeur courante de l'indice de la structure
"DO ... LOOP"
- J indice
Dépose sur la
pile des données la valeur courante de l'indice d'une structure
"DO ... LOOP" de deuxième niveau
- K indice
Dépose sur la
pile des données la valeur courante de l'indice d'une structure
"DO ... LOOP" de troisième niveau
- LEAVE
-
Initialise l'indice de la structure "DO
... LOOP" à la valeur max afin de forcer la sortie
de la boucle à la prochaine exécution de l'instruction
"LOOP"
- EXIT -
Cette instruction, inutilisable dans les
structures de boucles de type "DO ... LOOP" ou "DO
... +LOOP" permet de sortir de l'exécution d'une instruction
caractère
EMIT
-
Emission du caractère
- CR -
Passage à la ligne suivante
- BELL -
Emission d'un bip sonore
- SPACE
-
Emission d'un espace
Equivalent à "1 SPACES"
n SPACES
-
Emission de n espaces
adresse,
n TYPE
-
Emission des n caractères pointés
par adresse
adresse
COUNT
adresse+1, n
Extraction du nombre de caractère
d'une chaîne ASCII (255 maximum)
adresse,
n 1 -TRAILING adresse, n 2
Calcul du nombre de caractères d'une
chaîne ASCII après avoir les éventuels espaces
placés à la fin de celle-ci
- BIN -
Force le système en base binaire (2
dans "BASE")
- OCTAL -
Force le système en base octale (8
dans "BASE")
- DECIMAL -
Force le système en base décimale
(10 dans "BASE")
- HEX -
Force le système en base hexadécimale
(16 dans "BASE")
n 1, adresse
1 CONVERT
n 2, adresse 2
Conversion dans la base numérique
courante du nombre codé en ASCII dans adresse 1 avec la
valeur initiale n 1
Le résultat est n 2 et adresse 2 pointe le premier caractère
non convertible
n <#
signe, abs(n)
Début de conversion d'un nombre en
code ASCII dans la base courante
caractère
HOLD
-
Insertion d'un caractère dans la chaîne
du nombre converti
n 1 # n 2
Conversion d'une unité du nombre en
code ASCII et division de ce dernier par la base courante
n #S 0
Relance de l'instruction "#" jusqu'à
ce que n soit nul
signe, n
SIGN
signe, n
Insertion d'un caractère "-"
si signe n'est pas nul
signe, n
1 #>
adresse, n 2
Fin de la conversion d'un nombre en code
ASCII
Laisse sur la pile l'adresse de la chaîne de caractères
résultante et le nombre de caractères
n . -
Affichage de n dans la base courante
Equivalent à "<# #S SIGN #> TYPE"
adresse ? -
Affichage du mot de 16 bits pointé
par adresse
Equivalent à "@ ."
n U. -
Affichage de n dans la base courante en non
signé
Equivalent à "<# >R DROP 0 R> #S #> TYPE"
caractère
WORD
adresse
Extraction d'un mot se terminant par caractère
à partir du tampon d'entrée et dépô
sur la pile de l'adresse ou est stocké ce mot
adr1,nbc1,adr2,nbc2
STRCMP
b
Comparaison de 2 chaînes de caractères
adr1 avec nbc1 caractères et adr2 avec nbc2 caractères.
b est nul lorsque les 2 chaînes sont identiques, positif
lorsque adr1 est supérieure alphabétiquement à
adr2 et négatif dans le cas inverse
adr_c,adr_
DICO_CHERCHE adr_t',b
Recherche du pointeur adr_t' dans la table
adr_t tel que le contenu de la chaîne de caractères
adr_c soit le plus proche ou égal à celle pointée
par adr_t' (recherche dichotomique)
b est nul lorsque les 2 chaînes sont identiques, positif
lorsque adr1 est supérieure alphabétiquement à
adr2 et négatif dans le cas inverse
- DICO_INIT
-
Création ou mise à jour de
la table de classement par ordre alphabétique des instructions
du dictionnaire
- DLIST -
Liste le contenu du dictionnaire epar ordre
alphabétique
- ' "nom" adresse
Dépose sur la pile l'adresse de l'entête
de l'instruction "nom"
- FIND "nom" adresse
Dépose sur la pile l'adresse d'exécution
de l'instruction "nom"
- [ -
Passage en mode interprétation
- ] -
Passage en mode compilation
- : "nom"
-
Création de l'entête d'une nouvelle
instruction (passage en mode compilation)
- ; -
Fin d'une nouvelle instruction (retour en
mode interprétation)
- TACHE:
"nom"
-
Entête de définition d'une tâche,
le mot suivant cette instruction donne le nom de la tâche
Cette définition sera terminée avec l'instruction
";"
ATTENTION:
une tâche doit laisser la pile dans le même
état avant et après son exécution (ce qui
ne l'empêche pas de l'utiliser)
Lorsque la tâche est appelée par son nom, elle ne
retourne que l'adresse d'exécution
tâche
T_EXECUTE
-
Exécution de la tâche spécifiée
(utilisé pour mise au point)
niveau, tâche
T_AJOUTE
-
Ajout de la tâche spécifiée
dans la table des tâches avec le niveau de priorité
spécifié (1 à 65535)
millisecondes,
tâche T_ACTIVE -
Activation de la tâche spécifiée
dans le nombre de millisecondes spécifié (1 à
8192)
millisecondes,
tâche T_PERIODE -
Activation périodique de la tâche
spécifiée dans le nombre de millisecondes spécifié
(1 à 8192)
tâche
T_RETIRE
-
Retrait de la tâche spécifiée
de la table des tâches
- TLIST
-
Liste les tâches gérées
par le noyau en indiquant leur niveau de priorité et leur
état d'activité
- COMPILE
"nom"
-
Permet la compilation de l'instruction "nom"
à l'exécution
- [COMPILE]
"nom"
-
Force la compilation d'une instruction immédiate
"nom"
adresse EXECUTE
-
Exécution du programme pointé
par adresse
- " "chaîne
de caractères" adresse
Création d'une chaîne de caractères
terminée par " (255 au maximum)
- ECHO" "chaîne
de caractères" -
Affichage d'une chaîne de caractères
terminée par " (255 au maximum)
- ." "chaîne
de caractères" -
Compilation d'une chaîne de caractères
terminée par " (255 au maximum) qui sera affichée
à l'exécution de l'instruction
- ( -
Passage en mode commentaire jusqu'à
la rencontre du caractère ")"
- .S -
Liste le contenu de la pile des données
en commançant par le haut de la pile
- IMMEDIATE
-
Force, lorsque utulisé seul, l'exécution
de l'instruction en mode compilation (l'instruction est inutilisable
en mode interprétation).
L'usage combiné de "DIRECT" et "IMMEDIATE"
force l'exécution de l'instruction en mode interprétation
ET en mode compilation
- DIRECT
-
Force, lorsque utulisé seul, la compilation
du code exécutable de l'instruction (à n'utiliser
que pour les instructions codées en assembleur et très
courtes pour ne pas saturer la mémoire)
n ALLOT
-
Réservation de n mot de 16 bits initialisés
à zéro
adresse
LOAD
-
Lance l'interpréteur/compilateur sur
le texte pointé par "adresse"
- CREATE
-
Création d'une zone de programme
- DOES> -
Définition du pointeur sur la zone
de programme créée par "CREATE" et à
exécuter
Pour exemple, voici les définitions des instructions "VARIABLE"
et "CONSTANT":
: VARIABLE : CREATE , 0 , DOES> ;
: CONSTANT : CREATE 2, DOES> 2@ ;
n VARIABLE
"nom"
-
Création d'une variable 32 bits initialisée
par la valeur n sur 16 bits
n CONSTANT
"nom"
-
Création d'une constante 32 bits initialisée
par la valeur n sur 32 bits
adresse
STRING "nom" -
Compilation de la chaîne de caractères
dont l'adresse est spécifiée
- VLIST -
Liste le contenu du dictionnaire en commançan
par la dernière instruction déclarée et en
finissant par la première
- KEY caractère
Même fonction que "KEYBOARD"
mais en attendant que le clavier soit activé
- INKEY
caractère
Relecture du dernier caractère à
partir du clavier
- KEYBOARD
caractère
Lecture d'un caractère à partir
du clavier (le caractère est nul si le clavier est inactif)
adresse,
n EXPECT
-
Lecture de n caractères qui seron
stockés dans adresse
adresse
MEMOIRE_LIBERE b
Libération d'un bloc mémoire.
b est nul si l'opération s'est effectuée correctement
- QUIT -
Relance de l'interpréteur FORTH
- ABORT -
Interruption logicielle et relance de l'interpréteur
FORTH
- MEMOIRE_PROBLEME
-
Procédure d'arrêt du système
après détection d'une anomalie dans la liste chaînée.
Cette instruction est réservée au système
- T_MEMOIRE_CONTROLE
adresse
Tâche de contrôle de la liste
chaînée.
Cette tâche est gérée par le système
adresse,taille
MEMOIRE_INITIALISE b
Initialisation de la
mémoire à allocation dynamique.
b est nul si l'opération s'est effectuée correctement.
Cette instruction est réservée au système
taille MEMOIRE_ALLOUE
adresse
Allocation d'un bloc mémoire ayan
la taille précisée.
L'adresse est nulle si l'allocation est impossible
- MLIST
-
Liste les blocs de mémoire en indiquan
leur état d'occupation, leur taille et leur adresse.
- 68681_MRA
adresse
- 68681_SRA
adresse
- 68681_CRA
adresse
- 68681_RHRA
adresse
- 68681_ACR
adresse
- 68681_ISR
adresse
- 68681_CTU
adresse
- 68681_CTL
adresse
- 68681_MRB
adresse
- 68681_SRB
adresse
- 68681_CRB
adresse
- 68681_RHRB
adresse
- 68681_IVR
adresse
- 68681_IPR
adresse
- 68681_SOPBC
adresse
- 68681_ROPBC
adresse
Adresses des différents registres
(octets) du circuit d'interface 68681
- 68681_IT
adresse
Adresse du programme d'interruption du circui
d'interface 68681
- 68681_TABLE
adresse
Adresse d'une table de translation pour programmation
de la vitesse detransfert des liens séries du circuit d'interface
68681
- CW_PA
numéro
- CW_PR
numéro
- CW_PNTT
numéro
- CW_PNTR
numéro
- CW_CE
numéro
- CW_SA
numéro
- CW_SPA
numéro
- CW_SPR
numéro
- CW_SCE
numéro
- CW_TIMER
numéro
- CW_UART_BAUD
numéro
- CW_UART_CTRL
numéro
- CW_UART_DATA
numéro
- CW_DATA_STACK
numéro
- CW_RETURN_STACK
numéro
Numéros des différents registres
d'extension (mots de 16 bits) du coeur FORTH.
- FLASH_ORIGINE
adresse
Constante donnant l'adresse de débu
de la zone de mémoire FLASH contenant le système
de fichiers
- FPGA_IT
adresse
Adresse du programme d'interruption du FPGA
vitesse,nbbits,nbstop,parité,rts/cts
RS232_INIT -
Initialisation pour le lien série
A du circuit d'interface 68681 :
vitesse en nombre de bits par seconde (toutes les vitesses normalisée
entre 50 et 19200 bauds),
nbbits compris entre 5 et 8,
nbstop compris entre 1 et 2,
parité : 0 sans, 1 forcée à "0",
2 impaire, 3 paire, 4 forcée à "1",
rts/cts activés si différent de "0"
octet RS232_EMET
-
Emission d'un octet sur le lien série
A du circuit d'interface 68681
- RS232_RECOIT
octet
Réception d'un octet depuis le lien
série A du circuit d'interface 68681
n TEMPO
-
Exécute une temporisation de n millisecondes
- I2C_START
-
Envoi de la condition "START" au
lien I2C
ATTENTION : le noyau temps
réel sera figé jusqu'à l'envoi de la condition
"STOP"
valeur à
écrire,nbbits I2C_ECHANGE_BITS valeur lue
Echange de bits (1 à 32) sur le lien
I2C
Cette instruction écrit chaque bit en partant du poids
fort (selon le nombre de bits) et renvoie la valeur présente
lorsque SCL est au niveau haut. Pour lire une valeur, il suffi
de mettre tous les bits à "1"
- I2C_STOP
-
Envoi de la condition "STOP" au
lien I2C
- 68681_INIT
-
Initialisation du circuit d'interface 68681
- SWI_IT
adresse
- OP_IT
adresse
- DS_IT
adresse
- RS_IT
adresse
Constantes donnant les adresses des programmes
d'interruption (vecteurs)
- FPGA_INIT
-
Initialisation du FPGA
num_bloc,adr
FLASH_BLOC_LIT erreur
Lecture du bloc de 512 octets numéro
num_bloc à l'adresse adr.
erreur est nul lorsque la lecture est correcte
adr,num_bloc
FLASH_BLOC_ECRIT erreur
Ecriture du bloc de 512 octets numéro
num_bloc à partir de l'adresse adr.
erreur est nul lorsque l'écriture est correcte
num_sec FLASH_SECTEUR_EFFACE
erreur
Effacement du secteur de 64 Kilo Octets numéro
num_sec.
erreur est nul lorsque l'effacement est correct
x[n],adr_biquad BIQUAD y[n]
Calcul de la sortie y[n] du filtre biquad
décrit par adr_biquad et dont la valeur d'entrée
est x[n]:
- x[n] est l'échantillon d'entrée,
- adr_biquad est l'adresse des paramètres du filtre,
adr_biquad --> N a2<<N b2<<N w[n-2] a1<<N
b1<<N w[n-1] a0<<N
- y[n] est l'échantillon de sortie calculé comme
suit,
w[n] = [x[n]<<N + b1<<N*w[n-1] + b2<<N*w[n-2]]>>N
y[n] = [a0<<N*w[n] + a1<<N*w[n-1] + a2<<N*w[n-2]]>>N
w[n-2] = w[n-1]
w[n-1] = w[n]
- CW_VGA
numéro
Numéros du registre d'extension (mots
de 16 bits) de l'interface VGA du coeur FORTH.
limites,teinte,x1,y1,x2,y2
TRACE_REC
limites
Tracé d'un rectangle:
limites: pointeur sur xmin,ymin,xmax,ymax decrivant la zone d'affichage,
teinte: teinte du pixel ou inversion video si > 255 ,
x1,y1,x2,y2: coordonnees des coins en absolu par rapport a l'ecran.
limites,dx,dy,teinte,x,y,adr_motif
TRACE_MOTIF limites,dx,dy,teinte,x,y
Tracé d'un motif défini par
une matrice:
limites: pointeur sur xmin,ymin,xmax,ymax decrivant la zone d'affichage,
dx,dy: largeur et hauteur de la matrice en nombre de points (dx
<= 16),
teinte: teinte du pixel,
x,y: coordonnees absolues du coin superieur gauche du motif,
adr_motif : adresse de la matrice du motif.
limites,teinte,gen_car,x0,y0,adr,nbc
TRACE_CHAINE limites,teinte,gen_car,x0,y0,adr
Tracé d'une chaine de caractères:
limites: pointeur sur xmin,ymin,xmax,ymax decrivant la zone d'affichage,
teinte: teinte du pixel,
gen_car: adresse du générateur de caractères,
x0,y0: coordonnees absolues du coin superieur gauche du premier
caractère,
adr: adresse de la chaîne de caractères,
nbc: nombre de caractères.
limites,image,x1,y1,x2,y2
TRACE_LIGNE limites
Tracé d'une ligne:
limites: pointeur sur xmin,ymin,xmax,ymax decrivant la zone d'affichage,
teinte: teinte du pixel ou inversion video si > 255 ,
x1,y1,x2,y2: coordonnees des coins en absolu par rapport a l'écran
des extrémités.
limites,image,x0,y0
ECRIT_REC
limites
Ecriture d'une image rectangulaire:
limites: pointeur sur xmin,ymin,xmax,ymax decrivant la zone d'affichage,
image: pointeur sur le contenu de l'image
dx sur 2 octets
dy sur 2 octets
teinte1 sur 1 octet
...
teinteN sur 1 octet avec N = dx*dy,
x0,y0: coordonnées du coin en haut et a gauche en absolu
par rapport a l'écran.
limites,image,x0,y0
LIT_REC
limites
Lecture d'une image rectangulaire:
limites: pointeur sur xmin,ymin,xmax,ymax decrivant la zone d'affichage,
image: pointeur sur le contenu de l'image
dx sur 2 octets
dy sur 2 octets
teinte1 sur 1 octet
...
teinteN sur 1 octet avec N = dx*dy,
x0,y0: coordonnées du coin en haut et a gauche en absolu
par rapport a l'écran.
- AF_SOURIS
-
Affichage de la souris.
- EF_SOURIS
-
Effacement de la souris.
- FENETRE:
"nom"
-
Création de l'entête d'une nouvelle
fenêtre (passage en mode compilation)
code,adr
F_EXECUTE
-
Execution du programme lié à
la fenêtre pointée par adr et avec le paramètre
code
adr,rouge,vert,bleu
TRAMAGE_RVB adr
Génération d'une matrice de
8x8 pixels 256 couleurs à l'adresse adr pour simulation
d'une couleur 24 bits
- VGA_INIT
-
Initialisation de l'interface graphique.
flottan
FNEGATE
-flottant
Valeur opposée (inversion de S)
flottan
FABS
abs(flottant)
Valeur absolue (mise à 0 de S)
exposant,n*
NORM
flottant
Normalisation de la mantisse d'un nombre
*: n occupe 2 niveaux de la pile en IEEE double précision
flottant1,flottant2
F+
flottant1+flottant2
Addition
flottant1,flottant2
F-
flottant1-flottant2
Soustraction
flottant1,flottant2
F*
flottant1*flottant2
Multiplication
flottant1,flottant2
F/
flottant1/flottant2
Division
flottan
INT
n
Conversion flottant vers entier signé
(32 bits)
n UFLOAT
flottant
Conversion entier signé (32 bits)
vers flottant
- FORTH -
Liste le descriptif du noyau FORTH
- FORGET "nom" -
Destruction de toutes les instructions créées
à partir de "nom"
- T_RS232_CONNECTE
adresse
Tâche effectuant la connexion entre
le lien série et les entrées/sorties de l'interpréteur
FORTH (instructions "KEY", "INKEY", "KEYBOARD"
et "EMIT")
- T_VOYANT
adresse
Tâche gérant le clignotemen
du voyant de la carte (250 ms allumé et 250 ms éteint)
- TELECHARGEMENT
-
Instruction de telechargement avec compilation
du fichier texte en provenance d'une liaison terminale
- DEMARRAGE
-
Réinitialisation complète du
système (RESET logiciel)
- FUNIX
adresse
- FFLASH adresse
Adresse pointant le programme associé
à la gestion du système de fichier correspondant.
Utilisation de ces adresses:
0,adresse EXECUTE adr_mem,erreur --> installation du système
"adresse",
1,adresse EXECUTE - --> formattage du système "adresse",
adr_chaine,lec/ecr,2,adresse EXECUTE desc,taille/erreur -->
ouverture d'un fichier du système "adresse",
adr_mem,nbc,lec/ecr,desc,3,adresse EXECUTE nbc',taille/erreur
--> accès au fichier "desc" du système
"adresse",
desc,4,adresse EXECUTE erreur --> fermeture du fichier "desc"
du système "adresse",
adr_chaine,5,adresse EXECUTE erreur --> création d'un
répertoire dans le système "adresse",
adr_chaine,6,adresse EXECUTE erreur --> suppression d'un répertoire
dans le système "adresse",
adr_chaine,7,adresse EXECUTE adr_mem,erreur --> description
d'un répertoire dans le système "adresse".
n [IF] - instructions
- [THEN] -
Les instructions entre "[IF]" e
"[THEN]" sont interprétées/compilées
si n est différent de 0
n [IF] - instructions 1
- [ELSE] - instructions 2
- [THEN] -
Si n est différent de 0, seules les
instructions 1 sont interprétées/compilées,
sinon ce sont les instructions 2
- [LABEL] "nom" -
- [GOTO] "nom" -
"[GOTO] nom" force l'interprétation/compilation
des instructions qui suivent "[LABEL] nom"
- [VARIABLE] "nom"
adresse
"[VARIABLE]" crée, si elle
n'existe pas encore, ou donne l'adresse d'une variable 32 bits
"nom"
- V_BOUTON_GAUCHE adresse
Variable donnant l'état du bouton
gauche de la souris (actionné si différente de 0)
- V_BOUTON_MILIEU
adresse
Variable donnant l'état du bouton
du milieu de la souris (actionné si différente de
0)
- V_BOUTON_DROIT
adresse
Variable donnant l'état du bouton
droit de la souris (actionné si différente de 0)
- V_DX_SOURIS
adresse
Variable pour la gestion du déplacemen
en abcisse de la souris
- V_DY_SOURIS
adresse
Variable pour la gestion du déplacemen
en ordonnée de la souris
- T_BIP
adresse
Tâche gérant le la génération
du bip sonnore
durée,fréquence
BIP
-
Emission d'un bip sonnore avec la durée
en millisecondes et la fréquence en Hertz
- T_RHM_CONNECTE
adresse
Tâche effectuant la connexion entre
le clavier, la souris et les entrées/sorties de l'interpréteur
FORTH
(instructions "KEY", "INKEY", "KEYBOARD","EMIT"...)
- CW_PORT
numéro
Numéros du registre d'extension (mots
de 16 bits) du port parallèle du coeur FORTH.
- T_VOYANT
adresse
Tâche gérant le clignotemen
du voyant de la carte
- VOYANT_INIT
-
Initialisation du clignotement du voyan
de la carte.
- V_NPA
adresse
Variable contenant le nombre pseudo aléatoire
courant (32 bits)
- NPA nombre
Nouvelle itération du nombre pseudo
aléatoire (32 bits)
- TABLE_SIN
adresse
Adresse de la table de sinus pour calcul
en B.A.M.
- TABLE_ATAN
adresse
Adresse de la table de l'arctangeante pour
calcul en B.A.M.
n SIN sin(n)
Calcul du sinus de n en B.A.M.
n COS sin(n)
Calcul du cosinus de n en B.A.M.
n ASIN arcsin(n)
Calcul de l'arcsinus de n en B.A.M.
n ACOS arccos(n)
Calcul de l'arccosinus de n en B.A.M.
n,m ATAN arctan(n/m)
Calcul de l'arctangeante de n en B.A.M.
flottant,n
PUISSANCE
flottant^n
Elévation du flottant à la
puissance n
flottant1,flottant2
F/MOD
flottant1-(n*flottant2),n
Calcul du reste et du quotient (entier signé
32 bits) de la division de 2 flottants
flottant,adresse
FCONVERT
flottant',adresse'
Conversion de la chaîne de caractère
pointée par adresse en nombre flottant jusqu'au premier
caractère non convertible
- S_PINFINI
adresse
Chaine de caractere contenant "+infini"
- S_ZERO
adresse
Chaine de caractere contenant "0"
- S_MINFINI
adresse
Chaine de caractere contenant "-infini"
flottan
<##F#> adresse,n
Conversion d'un flottant en chaîne
de n caractères pointée par adresse
6 chiffres significatifs en simple précision et 12 en double
précision
flottan
F.
-
Affichage d'un flottant sur la sortie terminal
flottan
FSQRT
flottant'
Extraction de la racine carrée d'un
flottant
flottan
FEXP0
flottant'
Calcul de l'exponentielle d'un flottant par
développement limité
flottan
FLN0
flottant'
Calcul du logarithme népérien
d'un flottant par développement limité
flottan
FEXP
flottant'
Calcul de l'exponentielle d'un flottant
flottan
FLN
flottant'
Calcul du logarithme népérien
d'un flottant
- FPI flottant
Constante PI
flottan
FATAN0
flottant'
Calcul de l'arc-tangente d'un flottant par
développement limité
arc,y,x,ki,fatan(ki)
AJUSTEXY
arc',y',x'
Sous programme pour calcul de la tangente
de l'angle moitié
flottan
FTANU
flottant'
Calcul de la tangente de l'angle moitié
flottan
FTAN
flottant'
Calcul de la tangente
flottan
FSIN
flottant'
Calcul du sinus
flottan
FCOS
flottant'
Calcul du cosinus
flottan
FATAN
flottant'
Calcul de l'arc-tangente
flottan
FASIN
flottant'
Calcul de l'arc-sinus
flottan
FACOS
flottant'
Calcul de l'arc-cosinus
r1,v1,b1,...,rn,vn,bn,n,dx,dy,mode DEGRADE_- adresse
Création d'une image
concaténée avec plusieurs couleurs
dégradées (horizontal) à utiliser avec ECRIT_REC.
r1,v1,b1,...,rn,vn,bn: teinte rouge, verte et bleue de chaque couleur, 1 est la couleur depuis la droite
n: nombre de couleurs, la valeur minimale est 2
dx,dy: largeur et hauteur de l'image en nombre de pixels, la valeur minimale est 1
mode: 0 pour des lignes, autre valeur pour pastel
adresse: localisation de la mémoire de l'image, elle doi
être libérée avec MEMOIRE_LIBERE si non
utilisée.
r1,v1,b1,...,rn,vn,bn,n,dx,dy,mode DEGRADE_| adresse
Création d'une image
concaténée avec plusieurs couleurs
dégradées (vertical) à utiliser avec ECRIT_REC.
r1,v1,b1,...,rn,vn,bn: teinte rouge, verte et bleue de chaque couleur, 1 est la couleur depuis le bas
n: nombre de couleurs, la valeur minimale est 2
dx,dy: largeur et hauteur de l'image en nombre de pixels, la valeur minimale est 1
mode: 0 pour des lignes, autre valeur pour pastel
adresse: localisation de la mémoire de l'image, elle doi
être libérée avec MEMOIRE_LIBERE si non
utilisée.
r1,v1,b1,...,rn,vn,bn,n,dx,dy,mode DEGRADE_\ adresse
Création d'une image
concaténée avec plusieurs couleurs
dégradées (diagonal /) à utiliser avec ECRIT_REC.
r1,v1,b1,...,rn,vn,bn: teinte rouge, verte et bleue de chaque couleur, 1 est la couleur depuis le bas à droite
n: nombre de couleurs, la valeur minimale est 2
dx,dy: largeur et hauteur de l'image en nombre de pixels, la valeur minimale est 1
mode: 0 pour des lignes, autre valeur pour pastel
adresse: localisation de la mémoire de l'image, elle doi
être libérée avec MEMOIRE_LIBERE si non
utilisée.
r1,v1,b1,...,rn,vn,bn,n,dx,dy,mode DEGRADE_/ adresse
Création d'une image
concaténée avec plusieurs couleurs
dégradées (diagonal \) à utiliser avec ECRIT_REC.
r1,v1,b1,...,rn,vn,bn: teinte rouge, verte et bleue de chaque couleur, 1 est la couleur depuis le bas à gauche
n: nombre de couleurs, la valeur minimale est 2
dx,dy: largeur et hauteur de l'image en nombre de pixels, la valeur minimale est 1
mode: 0 pour des lignes, autre valeur pour pastel
adresse: localisation de la mémoire de l'image, elle doi
être libérée avec MEMOIRE_LIBERE si non
utilisée.
- XMODEM_TAMPON
adresse
Adresse du tampon d'émission/réception
de 128 octets
- XMODEM_ETAT
adresse
Variable pour gestion du transfert
- XMODEM_BLOC
adresse
Variable contenant le numéro de bloc
en cours de transfert
- XMODEM_TEMPO
adresse
Variable pour gestion des temporisations
liées au protocole
- XMODEM_SOMME
adresse
Variable pour calcul de la somme de vérification
- INPUT_FILE?
nbr_octets
Instruction donnant le nombre d'octets disponibles
dans INPUT_FILE
- RS232_RECEIVE_FILE?
nbr_octets
Instruction donnant le nombre d'octets disponibles
dans RS232_RECEIVE_FILE
- RS232_TRANSMIT_FILE?
nbr_octets
Instruction donnant le nombre d'octets disponibles
dans RS232_TRANSMIT_FILE
- OUTPUT_FILE?
nbr_octets
Instruction donnant le nombre d'octets disponibles
dans OUTPUT_FILE
- T_XMODEM_CONNECTE
adresse
Tâche de gestion XMODEM (remplace T_RS232_CONNECTE
pendant la durée du transfert)
rec/emi XMODEM_OUVRE
erreur
Ouverture d'un transfert XMODEM en émission
si rec/emi est nul et en réception sinon.
erreur est nul lorsque l'opération est correcte
- XMODEM_OCTET_RECOIT
octet,erreur
Réception d'un octet.
erreur est nul si l'octet est valide, sinon la réception
est terminée
octet XMODEM_OCTET_EMET
erreur
Emission d'un octet.
erreur est nul si l'émission est correcte
- XMODEM_FERME
-
Fin du transfert en émission ou en
réception
adresse XMODEM_RECOIT
longueur
Réception d'un fichier à l'adresse
spécifiée sur la longueur (en octets) indiquée
en fin de transfert
adresse,longueur
XMODEM_EMET -
Emission d'un fichier situé à
l'adresse et sur la longueur (en octets) spécifiées
- S_NOM_FLASH
adresse
Chaine de caractere contenant "Systeme_de_fichier_FLASH"
qui est son nom par défaut
- FLASH_BLOC_ALLOUE
numéro/erreur
Réquisition d'un bloc de 512 octets.
Si le numéro est nul, c'est qu'il n'y a plus de bloc disponible.
Si le numéro est négatif, il s'agit d'un code d'erreur
numéro
FLASH_BLOC_LIBERE -
Restitution d'un bloc de 512 octets avec
son numéro.
numéro
FLASH_BLOC_ETAT état
Retourne 0 si le bloc numéro est libre.
adr_tampon
FLASH_FICHIER_LIT taille/erreur,octet
Lecture séquentielle d'un octet du
fichier ouvert avec adr_tampon.
taille/erreur peut avoir les valeur suivantes:
taille restante du fichier si lecture correcte (>=0)
-1 si une erreur est survenue pendant la lecture
-2 si adr_tampon ne correspond à aucun fichier en cours
de lecture
octet,adr_tampon
FLASH_FICHIER_ECRIT taille/erreur
Ecriture séquentielle d'un octet dans
le fichier ouvert avec adr_tampon.
taille/erreur peut avoir les valeur suivantes:
>0 si écriture correcte, la valeur étant le nombre
d'octets écrits (taille)
-10 si une erreur est survenue pendant l'écriture
-11 si le système de fichier est saturé
-12 si adr_tampon ne correspond à aucun fichier en cours
d'écriture
adr_tampon
FLASH_FICHIER_FERME erreur
Fermeture du fichier ouvert avec adr_tampon.
erreur peut avoir les valeur suivantes:
0 si fermeture correcte
code de l'erreur survenue pendant les opérations précédantes
-20 si une erreur est survenue pendant l'écriture
-21 si le système de fichier est saturé
-22 si adr_tampon ne correspond à aucun fichier en cours
d'utilisation
- FLASH_FORMATE
-
Formatage du système de fichier en
mémoire FLASH
adr_chemin/nom,lec/ecr
FLASH_FICHIER_OUVRE adr_tampon,taille/erreur
Ouverture d'un fichier décrit par
la chaîne de caractères adr_chemin/nom en écriture
si lec/ecr est nul sinon en lecture.
adr_tampon est l'adresse du descripteur du fichier ouvert.
taille/erreur peut avoir les valeur suivantes:
taille du fichier si ouverture en lecture correcte (0 si le fichier
n'existe pas)
0 ou taille du fichier déjà existant si ouverture
en écriture correcte
-40 si il est impossible de lire un bloc
-41 si la mémoire est insuffisante pour réaliser
l'ouverture
-42 si le chemin du fichier est inconnu
-43 si une écriture de fichier est déjà en
cours alors qu'une écriture est demandée
-44 si le fichier ouvert est un répertoire
- FLASH_INSTALLE
erreur
Installation du système de fichier
en mémoire FLASH.
erreur est nul si correcte, sinon:
-30 si le système de fichier est indéchiffrable
-31 si la mémoire est insuffisante pour formater
-32 si la mémoire est insuffisante pour l'installation
- FICHIER_CHEMIN?
adresse
Alloue de la mémoire pointée
par adresse et contenant une chaine de caractères avec
le chemin courant.
La mémoire allouée devra être restituée
(MEMOIRE_LIBERE) après utilisation.
Retourne 0 s'il ny a plus de mémoire disponible ou que
le système de fichier n'est pas fonctionnel
adr_nom,nbc
CHEMIN_CONCATENE adr_mem
Alloue de la mémoire pointée
par adr_mem et contenant la chaîne de caractère résultante
de la concaténation du chemin courant et de la chaîne
pointée par adr_nom de longueur nbc.
La mémoire allouée devra être restituée
(MEMOIRE_LIBERE) après utilisation.
Retourne 0 s'il ny a plus de mémoire disponible ou que
le système de fichier n'est pas fonctionnel
fadr FMOUNT
-
Installation du système de fichier
"fadr"
fadr FUNMOUNT
-
Suppression du système de fichier
"fadr"
- FINIT
-
Initialisation avec installation des système
de fichiers intégrés
adr_chemin/nom,lec/ecr
FOPEN
adr_desc,taille/erreur
Ouverture d'un fichier décrit par
la chaîne de caractères adr_chemin/nom en écriture
si lec/ecr est nul sinon en lecture.
adr_desc est l'adresse du descripteur du fichier ouvert.
taille/erreur peut être:
la taille du fichier si ouverture en lecture correcte (0 si le
fichier n'existe pas)
0 ou taille du fichier déjà existant si ouverture
en écriture correcte
une erreur si la valeur est négative
adr_mem,nbc,adr_desc
FREAD
nbc'/erreur
Lecture de nbc octets du fichier ouvert décri
par adr_desc à l'adresse adr_mem.
nbc'/erreur donne le nombre de caractères lus ou une erreur
si négatif
adr_mem,nbc,adr_desc
FWRITE
erreur
Ecriture de nbc octets depuis l'adresse adr_mem
dans le fichier ouvert décrit par adr_desc.
erreur est nul si l'écriture est correcte
adr_desc
FCLOSE
erreur
Fermeture du fichier ouvert décri
par adr_desc.
erreur est nul si la fermeture est correcte
adr_chemin/nom
MKDIR
erreur
Création du répertoire décri
par la chaîne de caractères adr_chemin/nom.
erreur est nul si la création est correcte
adr_chemin/nom
RMDIR
erreur
Suppression du répertoire décri
par la chaîne de caractères adr_chemin/nom.
erreur est nul si la suppression est correcte
adr_chaine/nom
LDIR
adr_mem,erreur
Alloue de la mémoire qui contiendra
la description du répertoire pointé par la chaîne
de caractères adr_chaine/nom.
adr_mem, si différent de 0 et erreur nul, pointe la séquence
suivante:
nombre de fichiers/dossiers sur 4 octets
taille du fichier/dossier 1 sur 4 octets
type fichier (1), dossier (2) ou inconnu (0) 1 sur 4 octets
numéro de création du fichier/dossier 1 sur 4 octets
nombre de modifications du fichier/dossier 1 sur 4 octets
Chaîne de caractère avec nom du dossier/fichier 1
sur n*4 octets
taille du fichier/dossier 2 sur 4 octets
...
Chaîne de caractère avec nom du dernier dossier/fichier
sur n*4 octets
0 pour fin de la liste sur 4 octets
La mémoire allouée devra être restituée
(MEMOIRE_LIBERE) après utilisation.
- FORMATE
-
Programme de gestion de l'effacement des
systèmes de fichiers
adr_nom
REPERTOIRE_LISTER adr_mem,erreur
Alloue de la mémoire qui contiendra
la description du répertoire pointé par la chaîne
de caractères adr_nom.
adr_mem, si différent de 0 et erreur nul, pointe la séquence
suivante:
nombre de fichiers/dossiers sur 4 octets
taille du fichier/dossier 1 sur 4 octets
type fichier (1), dossier (2) ou inconnu (0) 1 sur 4 octets
numéro de création du fichier/dossier 1 sur 4 octets
nombre de modifications du fichier/dossier 1 sur 4 octets
Chaîne de caractère avec nom du dossier/fichier 1
sur n*4 octets
taille du fichier/dossier 2 sur 4 octets
...
Chaîne de caractère avec nom du dernier dossier/fichier
sur n*4 octets
0 pour fin de la liste sur 4 octets
La mémoire allouée devra être restituée
(MEMOIRE_LIBERE) après utilisation.
adr_nom,nbc,adr_mem,taille_max
FICHIER_LIRE erreur
Lecture d'un fichier à l'adresse adr_mem
sur une taille maximale taille_max et dont le chemin/nom est pointé
par la chaîne de caractères adr_nom de longueur nbc.
erreur est nul si tout s'est bien déroulé
adr_mem,taille,adr_nom,nbc
FICHIER_ECRIRE erreur
Ecriture d'un fichier à partir de
l'adresse adr_mem sur une longueur taille et dont le chemin/nom
est pointé par la chaîne de caractères adr_nom
de longueur nbc.
erreur est nul si tout s'est bien déroulé
- PWD -
Commande affichant les caractéristiques
du système de fichier et le chemin courant
- CD" chemin"
-
Commande permettant de se déplacer
dans les système de fichier
- LS"
chemin" -
Affichage du contenu du répertoire
"chemin"
- MKDIR"
chemin/nom" -
Création du répertoire "chemin/nom"
- RM"
chemin/nom" -
Suppression du fichier "chemin/nom"
- RMDIR"
chemin/nom" -
Suppression du répertoire "chemin/nom"
- MORE"
chemin/nom" -
Affichage sur l'écran du fichier de
texte "chemin/nom"
adr_nom,nbc
CF
-
Routine commune à CF" et BINAIRE_CHARGE
- CF"
chemin/nom" -
Compilation du fichier source FORTH "chemin/nom"
- CP"
chemin1/nom1 chemin2/nom2" -
Copie de fichier
- MV"
chemin1/nom1 chemin2/nom2" -
Déplacement de fichier
- XMODEM_RECOIT"
chemin/nom" -
Réception du fichier "chemin/nom"
sous protocole XMODEM
- XMODEM_EMET"
chemin/nom" -
Transmission du fichier "chemin/nom"
sous protocole XMODEM
- BINAIRE_INDEX
adresse
Variable contenant l'adresse de chargemen
du fichier "LANCE.BIN"
- S_BINAIRE
adresse
Chaine de caractere contenant "./BINAIRES/LANCE.BIN"
- BINAIRE_CREE
-
Création du fichier "LANCE.BIN"
- BINAIRE_CHARGE
-
Chargement du fichier "LANCE.BIN"
- S_LANCE
adresse
Chaine de caractere contenant "./LANCE"
- LANCE
-
Chargement du fichier "LANCE" pour
démarrage du système
- CARACTERES_GRAPHIQUES
adresse
Adresse du générateur de caractères
alphanumériques avec une matrice de 7x10 (10 mots de 16
bits par caractères)
limites,dx,dy,teinte,x,y,adr_motif
TRACE_MOTIF_RELIEF limites,dx,dy,teinte,x,y
Tracé d'un motif défini par
une matrice avec effet 3D:
limites: pointeur sur xmin,ymin,xmax,ymax decrivant la zone d'affichage,
dx,dy: largeur et hauteur de la matrice en nombre de points (dx
<= 16),
teinte: teinte du pixel,
x,y: coordonnees absolues du coin superieur gauche du motif,
adr_motif : adresse de la matrice du motif.
limites,teinte,gen_car,x0,y0,adr,nbc
TRACE_CHAINE_RELIEF limites,teinte,gen_car,x0,y0,adr
Tracé d'une chaine de caractères
avec effet 3D:
limites: pointeur sur xmin,ymin,xmax,ymax decrivant la zone d'affichage,
teinte: teinte du pixel,
gen_car: adresse du générateur de caractères,
x0,y0: coordonnees absolues du coin superieur gauche du premier
caractère,
adr: adresse de la chaîne de caractères,
nbc: nombre de caractères.
- COINS
adresse
Adresse d'un générateur de
caractères spécifiques pour l'instruction TRACE_CONTOUR
limites,teinte,x1,y1,x2,y2,enf/rel
TRACE_CONTOUR limites
Tracé d'un contour biseauté
rectangulaire (3 pixels):
limites: pointeur sur xmin,ymin,xmax,ymax decrivant la zone d'affichage,
teinte: teinte du fond,
x1,y1,x2,y2: coordonnees des coins en absolu par rapport a l'ecran,
enf/rel: choix de l'aspect enfoncé ou relaché du
contour.
x1,y1,x2,y2
TRACE_CADRE x1,y1,x2,y2
Tracé d'un cadre rectangulaire (3
pixels) en vidéo inversée.
Cette routine est utilisée par l'Interface Utilisateur
Graphique pour les manipulations des fenêtres:
x1,y1,x2,y2: coordonnees des coins en absolu par rapport a l'ecran.
limites,teinte,x1,y1,x2,y2,position,taille,total,fond
TRACE_POTAR_V limites
Affichage d'un potentiomètre rectiligne
vertical:
limites: pointeur sur xmin,ymin,xmax,ymax decrivant la zone d'affichage,
teinte: teinte du potentiomètre,
x1,y1,x2,y2: coordonnees des coins en absolu par rapport a l'ecran,
position: position du curseur (0 à total),
taille: taille du curseur (0 à total),
total: hauteur du potentiomètre,
fond: teinte de l'empreinte du potentiomètre.
limites,teinte,x1,y1,x2,y2,position,taille,total,fond
TRACE_POTAR_H limites
Affichage d'un potentiomètre rectiligne
horizontal:
limites: pointeur sur xmin,ymin,xmax,ymax decrivant la zone d'affichage,
teinte: teinte du potentiomètre,
x1,y1,x2,y2: coordonnees des coins en absolu par rapport a l'ecran,
position: position du curseur (0 à total),
taille: taille du curseur (0 à total),
total: hauteur du potentiomètre,
fond: teinte de l'empreinte du potentiomètre.
- PRESSE_PAPIER
adresse
Adresse du tampon pour copier et coller
- FOND_ECRAN
adresse
Adresse du programme appelé lorsqu'il
y a action sur un bouton de la souris dont le curseur est sur
le fond de l'écran
- ACTION_UTILISATEUR
adresse
Variable utilisée par la gestion du
mode économiseur d'écran
- SOURIS
dx,dy
Routine donnant le déplacement de
la souris en x et y.
Ce déplacement est remis à zéro pour l'appel
suivant
- BOUTON_GAUCHE
enf/rel
Routine donnant l'état du bouton gauche
de la souris (variable V_BOUTON_GAUCHE):
enf/rel: 0 si pas d'action utilisateur
- BOUTON_MILIEU
enf/rel
Routine donnant l'état du bouton du
milieu de la souris (variable V_BOUTON_MILIEU):
enf/rel: 0 si pas d'action utilisateur
- BOUTON_DROIT
enf/rel
Routine donnant l'état du bouton droi
de la souris (variable V_BOUTON_DROIT):
enf/rel: 0 si pas d'action utilisateur
- SYMBOLES_MENU
adresse
Adresse du générateur des symboles
du coins des fenêtres en haut à droite
- GRAPHIQUES_16
adresse
Adresse d'un générateur de
caractères graphiques avec une matrice de 16x16 (16 mots
de 16 bits par caractères).
Ce générateur est utilisé par l'Interface
Graphique Utilisateur du système
- GRAPHIQUES_12
adresse
Adresse d'un générateur de
caractères graphiques avec une matrice de 12x12 (12 mots
de 16 bits par caractères).
Ce générateur est utilisé par l'Interface
Graphique Utilisateur du système
x1,y1,x2,y2,adr_f,index_f
SPF_RETRACE x1,y1,x2,y2,adr_f,index_f'
Routine récursive de F_RETRACE:
x1,y1,x2,y2: coordonnees des coins en absolu par rapport a l'ecran,
adr_f: adresse de description de la fenêtre supérieure
index_f,index_f': index des fenêtres raffraichies.
x1,y1,x2,y2,adr_f
F_RETRACE
-
Routine raffraichissant le contenu de l'écran
graphique dans la zone indiquée:
x1,y1,x2,y2: coordonnees des coins en absolu par rapport a l'ecran,
adr_f: si nul alors raffraichissement de toute la zone
sinon raffraichissement de seulement la partie visible
de la fenêtre possédant l'adresse de description
correspondante.
x0,y0,adr_f
F_POSITION -
Initialisation de la position initiale d'une
fenêtre:
x0,y0: coordonnees du coin en haut à gauche de la fenêtre
en absolu par rapport a l'écran,
adr_f: adresse de description de la fenêtre.
dx,dy,adr_f
F_TAILLE
-
Initialisation de la taille initiale d'une
fenêtre:
dx,dy: largeur et hauteur initiales en pixels,
adr_f: adresse de description de la fenêtre.
dxmin,dymin,dxmax,dymax,adr_f
F_LIMITES
-
Initialisation des tailles minimales et maximales
d'une fenêtre devenant ainsi redimensionnable:
dxmin,dymin: largeur et hauteur minimales en pixels,
dxmax,dymax: largeur et hauteur maximales en pixels,
adr_f: adresse de description de la fenêtre.
adr_f F_ACTIVE
-
Activation d'une fenêtre:
adr_f: adresse de description de la fenêtre.
adr_f F_AJOUTE
-
Ajout du descripteur d'une nouvelle fenêtre
et activation de celle-ci:
ATTENTION: ne peut être
utilisé que lorsque tous les paramètres de la fenêtre
sont initialisés,
adr_f: adresse de description de la fenêtre.
adr_f F_RETIRE
-
Suppression d'une fenêtre:
adr_f: adresse de description de la fenêtre.
x0,y0,dx,dy,adr_f
F_MODIFIE
-
Déplacement et redimensionnement d'une
fenêtre:
x0,y0: coordonnées du coin en haut à gauche de la
fenêtre en absolu par rapport a l'écran,
dx,dy: largeur et hauteur en pixels,
adr_f: adresse de description de la fenêtre.
x,y F_SELECTION
adr_f
Recherche du descripteur de la fenêtre
supérieure aux coordonnées x et y:
x,y: coordonnées en absolu par rapport à l'écran,
adr_f: adresse de description de la fenêtre ou 0 si fond
de l'écran
- FLIST
-
Liste les fenêtres en indiquant leurs
coordonnées et leurs dimensions
- T_CONTROLE
adresse
Tâche de gestion de l'Interface Graphique
Utilisateur
adr_s DIALOGUE_MESSAGE
-
Boîte de dialogue pour affichage d'un
message:
adr_s: adresse de la chaîne de caractères du message.
adr_prgm,adr_s
DIALOGUE_EXECUTE -
Boîte de dialogue pour indiquer l'exécution
d'un programme:
adr_prgm: adresse du programme à exécuter,
adr_s: adresse de la chaîne de caractères du commentaire.
b,adr_s
DIALOGUE_OUI/NON b'
Boîte de dialogue pour poser une question
avec réponse oui ou non:
b: réponse par défaut (0 pour non),
adr_s: adresse de la chaîne de caractères de la question,
b': réponse de l'utilisateur.
n,adr_s
DIALOGUE_CHOIX n'
Boîte de dialogue pour demander le
choix parmi plusieurs options:
n: numéro de la ligne du choix par défaut,
adr_s: adresse de la chaîne de caractères des options
(un retour chariot sert de séparateur),
n': numéro de la ligne correspondant au choix de l'utilisateur.
n,base,adr_s
DIALOGUE_NOMBRE n'
Boîte de dialogue pour demander un
nombre entier:
n: valeur initiale du nombre,
base: base d'affichage du nombre,
adr_s: adresse de la chaîne de caractères du commentaire,
n': valeur finale du nombre.
adr_t,nbc_max,adr_s
DIALOGUE_TEXTE nbc
Boîte de dialogue pour demander une
chaîne de caractères:
adr_t: adresse de la chaîne de caractères,
nbc_max: nombre maximum de caractères,
adr_s: adresse de la chaîne de caractères du commentaire,
nbc: nombre final de caractères.
- DIALOGUE_BOUTON_GAUCHE -
Gestion du curseur de la souris pendant l'action
sur son bouton gauche (utilisé par l'Interface Graphique
utilisateur).
adr_nom,lec/ecr
DIALOGUE_FICHIER adr'_nom
Boîte de dialogue pour naviguer dans
le système de fichier:
adr_nom: adresse de la chaîne de caractères contenan
le chemin et le nom du fichier initial,
lec/ecr: demande de lecture ou écriture du fichier (0 pour
écriture),
adr'nom: adresse de la chaîne de caractères contenan
le chemin et le nom du fichier choisi.
adr'nom est égal à -1 si l'utilisateur a choisi
d'annuler l'action ou si un problème d'accès au
système de fichiers s'est produit.
teinte,adr_s
DIALOGUE_PALETTE teinte'
Boîte de dialogue pour demander une
couleur sur 8 bits:
teinte: couleur par défaut,
adr_s: adresse de la chaîne de caractères du commentaire,
teinte': couleur finale (-1 si opération annulée
par l'utilisateur).
rouge,vert,bleu,adr_s DIALOGUE_RVB rouge',vert',bleu',b
Boîte de dialogue pour demander une
couleur sur 24 bits:
rouge,vert,bleu: couleur par défaut,
adr_s: adresse de la chaîne de caractères du commentaire,
rouge',vert',bleu': couleur finale,
b: différent de 0 si opération annulée par
l'utilisateur.
f,adr_s DIALOGUE_FLOTTANT f'
Boîte de dialogue pour demander un
nombre à virgule flottante:
f: valeur initiale du nombre,
adr_s: adresse de la chaîne de caractères du commentaire,
f': valeur finale du nombre.
- F_FORTH
adresse
Adresse du descripteur de la fenêtre
FORTH
- T_FORTH
adresse
Tâche de gestion de la fenêtre
FORTH
- A_FORTH
-
Programme de lancement de l'Interface Graphique
Utilisateur
- INSTALLE_FOND_ECRAN
-
Programme de gestion du fond d'écran
- CALCULETTE
-
Application calculatrice en nombres à
virgule flottante (64 bits)
- BECANE
-
Application calculatrice en nombres entiers
(32 bits)
- MEM_EDIT
-
Application édition du contenu de
la mémoire du système
- TXT_EDIT
-
Application édition de texte
- XMD_EDIT -
Application de transfert sous protocole XMODEM
n1h,n1l,n2h,n2l ++ (n1+n2)h,(n1+n2)l
Adition au format 32 bits
n1h,n1l,n2h,n2l -- (n1-n2)h,(n1-n2)l
Soustraction au format 32 bits
- IDLE -
Désactivation de l'horloge du processeur
- SLEEP -
Désactivation de toutes les horloges
- ITRX1 adresse
Adresse d'un programme de remplacement pour l'interruption de réception de l'UART1 (2 mots de 16 bits)
- TELEC adresse
Adresse de la durée en milliseconde avant la fin d'un téléchargement
- CNTITP adresse
Adresse d'un compteur d'interruptions parasites initialisé à 0 au RESET
- MEM_PRGHERE adresse
Adresse de la valeur de "PRGHERE" (2 mots de 16 bits)
- PRG_PNT adresse
Adresse d'une variable de 32 bits contenant le pointeur du bloc de mémoire FLASH en cours de modification
- PRGHERE adrh,adrl
Dépose sur la pile l'adresse de compilation
adrh,adrl >PRGHERE -
Initialise l'adresse de compilation
adrh,adrl PRG@ nh,nl
Lecture d'un mot de 24 bits de la mémoire FLASH
nh,nl,adrh,adrl PRG! -
Ecriture d'un mot de 24 bits dans la mémoire FLASH
nh,nl PRG, -
Compilation d'un mot de 24 bits
L'adresse de compilation (PRGHERE) est incrémenté de 2
adrh,adrl EEP@ n
Lecture d'un mot de 16 bits de la mémoire EEPROM
UNIQUEMENT POUR PIC24F ET dsPIC30F
n,adrh,adrl EEP! -
Ecriture d'un mot de 16 bits dans la mémoire EEPROM
UNIQUEMENT POUR PIC24F ET dsPIC30F
- TIMER1_UART1_INIT -
Initialisation du TIMER1 et de l'UART1
- SEQUENCE adr
Adresse des variables utilisées par la gestion des séquences
- IT1MS adr
Adresse de stockage du vecteur d'interruption 1 ms
adrh,adrl IT1MS!! -
Ecriture du vecteur d'interruption 1 ms
- SEQ_BEGIN[ -
Début d'une table de séquences
deb_per,nbr_per SEQ_ADD "nom" -
Insertion d'une séquence dans une table de séquences:
"nom" est le nom du mot FORTH qui doit être exécuté
deb_per indique le numéro de la première période d'éxécution
nbr_per indique l'intervalle entre 2 exécutions
- SEQ_END] -
Fin d'une table de séquence
- SEQ_LIST
-
Liste de la table de séquence en activité
|