Introduction
Ce document
Ce document est une documentation du Forth pour le Hector HRX. Il est basé sur la documentation de HRX/Hector, mais aussi sur des exemples de code trouvés dans des magazines de l'époque, ainsi que sur le code de la ROM.
Contrairement à beaucoup de manuels de programmation, ce document ne commence pas par les bases des concepts de fonctionnement de l'ordinateur. Il part du principe que vous avez déjà connaissance de la représentation interne des données, de ce qu'est un octet, ce que sont les bases de numération,... Et que vous avez de l'expérience de programmation.
Forth
Dans la galaxie des langages de programmation, Forth est un langage à part. C'est un langage basé sur le concept de pile et de mots, où l'on navigue entre interprétation et compilation, et où le concept de développement itératif est très poussé.
Son concepteur Charles H. Moore l'a créé initialement comme une boite à outils pour ces propres besoins. Son utilisation s'est ensuite propagée dans le monde de l'informatique embarquée, des systèmes temps réel et des systèmes où la mémoire est limitée.
Forth est à la fois un langage bas niveau où vous avez accès à machine (ou ce que vous en laisse voire le système) et un langage haut niveau où vous pouvez créer des abstractions complexes.
Le Forth du Hector HRX se nomme « FORTH PAMPUK » et est conforme à la norme « 79 Standard », avec des inclusions du standard FIG.
Démarrage
Lors de l'allumage de l'ordinateur Hector HRX, le menu de démarrage vous propose de passer en mode Forth. Pour cela, il suffit de taper sur la touche 1
. Après un reset, une nouvelle option retour au mode Forth
est disponible et permet de revenir dans le mode Forth sans le réinitialiser.
Attention, passer en mode Hector 1
peu effacer les données du Forth.
À propos
- Auteur de ce manuel de référence : Sylvain Glaize
- Licence : CC BY-NC-SA 4.0
-
Exception : les listings présent dans les
Listings additionnels
venant d'autres sources, comme des magazines, ne sont pas couvert par cette licences. La source et les auteurs sont donnés pour chaque listing. Les commentaires ajoutés par ce manuel sont mis dans le domaine public. -
Merci à Dominique Contant pour son commentaire de la ROM Forth et ses nombreux renseignements sur le Forth dans le forum System-Cfg ainsi que ses contributions à ce manuel.
- Merci à Stevan Rankovic qui a entré les listings « sauver des mots » et « espace libre » que je reprends ici.
Sources
Les sources de ce manuel sont disponibles sur GitLab.
Les requêtes de modifications, corrections, ajouts, etc. y sont les bienvenues.
Historique des modifications
2025 08 06
- Ajout de la documentation de
DPL
. (*) - Ajout de la documentation de
?TERMINAL
. (*) - Précision ajoutée sur
SDROP
. (*) - Affinage de la documentation de
CASE
. (*) - Ajout d'un exemple alternatif à
CASE
,CASE:
. (*) - Correction de l'exemple
POW
pour les puissances 0 et 1.
2025 08 03
- Ajout d'une section pour l'explication de la création de mots de définition en langage machine avec
CREATE ... ;CODE
, ainsi que d'un exemple détaillé dans la section exemples. Le mot;CODE
est aussi documenté. (*) - Ajout de documentation sur les mots
CSP
,!CSP
et?CSP
. (*) - Précisions sur l'utilisation de
SMUDGE
. (*) - Documentation de
ENCLOSE
. (*) - Ajout du mot
SNULL
pour créer des chaînes de caractères terminée par0
. (*) - Ajout dans les exemples du mot
POW
pour mettre un nombre à la puissance.
2025 07 27
- Ajout de précisions dans les mots de définition. (*)
- Accompagné d'un exemple détaillé sur
<BUILDS ... DOES>
. (*) - Corrections de texte variées.
2025 07 24
- Ajout d'un vocabulaire de chaînes de caractères dans les exemples, ainsi que l'explication de tous les mots et un résumé. (*)
- Des corrections et précisions variées. (*)
2025 07 17
- Explication de l'utilisation de
CREATE
pour créer des mots en langage machine. (*) - Ajout d'un exemple complet pour l'explication des mots immédiats. (*)
- Ajout des explications avec exemples dans le paragraphe sur les boucles. (*)
- Clarification et tri des mots
(LOOP)
,(+LOOP)
,(DO)
ainsi queENCLOSE
. (*) - Quelques corrections de fautes de frappe (*), de tournures et de présentation.
(*) Contributions de Dominique Contant