CODINGCLASSEURS WEKA ★ Comment exploiterr toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★

4/5.1 Le langage Forth sur les AmstradCoding Classeurs Weka

4/5.1 Le langage Forth sur les Amstrad

I. Les versions FIG

Plusieurs versions ont été développées, d'abord en cassette, puis en disquette. La première version d'origine britannique, Kuma-Forth, ne travaillait qu'en cassette et était lancée depuis Basic.

Cette version a rapidement été supplantée par une version d'origine française tournant sous CP/M, Amsforth, mais disponible exclusivement pour les systèmes Amstrad CPC 464, 664 et 6128.

II. Les versions 83-Standard

Deux versions similaires sont apparues en Europe :

  • la première, nommée Volksforth, d'origine germanique, distribuée par le Forth Interest Group de Hambourg (RFA).
  • la seconde, nommée F83 et diffusée par l'Association Jedi. Dans la suite de ce chapitre nous nous consacrerons exclusivement à cette version.

Le système Forth F83 a été écrit par deux Américains, Henri Laxen et Michael Perry, et place dans le domaine public. Il tourne sous CP/M (visions 2.x, 3.x) et a été adapté de manière à fonctionner sur toute la gamme Amstrad sans restriction <CPC et PCW). Une version F83 est également disponible pour les nouveaux Amstrad compatibles IBM.

Sur tous ces systèmes, le langage Forth F83 utilise la même syntaxe, ce qui garantit une très grande portabilité des programmes.

Sur Amstrad, le langage Forth F83-Standard (que l'on abrégera par la suite par F83}, dispose des outils suivants :

  • décompilateur de définition Forth ;
  • assembleur 8080 au format Forth ;
  • éditeur de blocs de programmes source ;
  • méta-générateur de programme ;
  • tous les fichiers du code source ayant servi à la génération du langage Forth. En ciair. F83 est écrit et généré par F83.

III. Premier contact

Vous venez de recevoir votre disquette contenant le langage F83. La première précaution est de copier son contenu sur une autre disquette, car un accident est vite arrivé.

Une fois votre copie faite, passez sous CP/M:

  • depuis Basic en utilisant la commande CPM précédée de la barre verticale pour les systèmes Amstrad CPC 464, 664 et 6128 ;
  • en chargeant CP/M à la mise sous tension pour les systèmes Amstrad PCW.

Retirez la disquette CP/M et introduisez la disquette contenant F83. Tapez F83 et appui sur la touche RETURN. F83 se présente :

8080 Forth 83 Model 1.0.0

Modified 16oct83

Un appui sur la touche de retour chariot provoque l'affichage du message :

ok

Ce message indique que Forth est disponible et attend une commande. Il apparaîtra chaque fois que Forth aura terminé l'exécution d'une commande ou d'un programme.

La première commande que vous allez essayer est WORDS. Ce mot provoque l'affichage de tous les mots Forth disponibles dans le vocabulaire courant. Tapez WORDS et appuyez sur RETURN, vous voyez à l'affichage :

EMPTY MARK HELLO EXTEND80.BLK META80.BLK BACKGROUND

ACTIVATE SET-TASK ...etc...

...jusqu'à... UNNEST EXIT RP FORTH ok

L'appui sur une touche quelconque interrompt l'exécution de WORDS. Vous avez essayé ? Ah, il y a un problème, vous avez tapé en minuscule et Forth a affiché :

words words ?

C'est parce que Forth ne reconnaît que les commandes tapées en majuscules. Pour arranger ceci, tapez en caractères majuscules :

CAPS ON et appui sur RETURN (on ne le redira plus !)

A partir de maintenant, Forth ne se fâchera plus si vous tapez en minuscule ou en majuscule. Essayez à nouveau WORDS, words ou WoRdS.

A. PREMIÈRES OPÉRATIONS ARITHMÉTIQUES

Le langage FORTH stocke les nombres sur une pile nommée « pile de données ». L'empilage d'un nombre est très simple :

55

empile le nombre 55. Pour dépiler ce nombre, il y a plusieurs méthodes. La première consiste à afficher le contenu du dernier élément empilé.

. affiche 55

Si vous empilez plusieurs nombres, voici ce qui se passe

11 45 6543

Empilage du
premier nombre         11

Empilage du
second nombre           45  >--  le nombre 11 passe en dessous
                                 11 <---/ 

Empilage du              6543 >--  le nombre 45 passe en dessous
troisième nombre          45 <---| le nombre 11 passe en 3* position
                                   11 <--/

Le dépilage successif des nombres affiche ceux-ci dans l'ordre inverse de leur empilage :

. affiche 6543
. affiche 54
. affiche 11

Pour mieux visualiser le mécanisme d'empilage et de dépilage des nombres, pensez à une pile d'assiette : la dernière assiette déposée sur la pile sera la première reprise. A tout moment vous pouvez prendre connaissance du contenu de la pile sans avoir à provoquer le dépilage des valeurs qui y sont stockées en utilisant le mot 

1 2 3 S . affiche 1 2 3

Les opérateurs arithmétiques agissent en majorité sur les deux valeurs situées au sommet de la pile. Pour additionner deux nombres, il faut d'abord les déposer sur la pile de données :

22 44 + . affiche 66

Les valeurs 22 et 44 ne sont pas conservées. La somme de trois nombres ou plus obéit aux mêmes règles :

55 1 + 3 + . affiche 59 et peut aussi s'écrire 55 1 3 + + .

Ce principe de calcul est appelé Notation Polonaise Inverse (RPN dans la littérature anglaise, pour Reverse Polish Notation).

Soit deux nombres a et b, voici les syntaxes Forth des quatre opérations de base :

a b + pour a + b
a b - pour a-b
a b * pour a*b
a b / pour a/b

Pour la division, seul le quotient entier est conservé sur la pile de données :

22 7 / . affiche 3

Le reste de la division peut être obtenu en appliquant la fonction modulo :

22 7 MOD . affiche 1

Une fonction /MOD combine les actions de I et de MOD:

22 7 /MOD . . affiche 3 1

Les opérations peuvent être combinées mais une opération en notation arithmétique comportant des parenthèses doit être convertie en notation RPN en tenant compte de l'ordre de priorité des opérations. Forth n'utilise pas les parenthèses dans les opérations arithmétiques :

soit l'expression algébrique    (2 + 5) * ( 7 - 2 )

elle s'écrit en Forth               2 5 + 7 2 - *

★ NOTE: 8e Complément

Page précédente : 4/5 - Le langage Forth 83-Standard pour Amstrad 464, 664, 6128 et PCW

CPCrulez[Content Management System] v8.7-desktop/cache
Page créée en 147 millisecondes et consultée 160 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.