PLUSHIE manipule uniquement des adresses mémoires.
En pratique, on simule la mémoire par un tableau unidimensionnel extensible d'entiers de type Mémoire[].
Le moteur automate de PLUSHIE doit juste pouvoir générer une nouvelle adresse mémoire disponible quand la dernière adresse disponible a été utilisée.
Pour pouvoir construire des architectures de données complexes, une adresse mémoire doit permettre d'accéder à 2 adresses mémoires au moins. La première est appelée Tête et la seconde Suite
Destination=Mémoire[Mémoire[Exec]]
Avancer le pointeur d'exécutionMémoire[Exec]=Mémoire[Suiv[Mémoire[Exec]]]
Copier sur le registre Source la valeur mémoire pointée par le pointeur d'exécutionMémoire[Exec]=Mémoire[Suiv[Tete[Exec]]]
Avancer à nouveau le pointeur d'exécutionMémoire[Mémoire[Destination]]=Mémoire[Mémoire[Source]]
Pointer Suite sur la seconde adresseMémoire[Mémoire[Adressedesuite]] = Suiv[Mémoire[Mémoire[Variablesuite]]]
Si le registre Entrée est vide, lire un caractère dans le registre EntréeEt c'est tout. Le moteur ne comprend rien. Il avance, copie, lit et écrit. Et pourtant, le comportement supérieur apparaît.
En pratique, ce moteur automate est programmé en VB.net dans un module commenté de 400 lignes, dans l'interface proposée au téléchargement. Il est écrit en JavaScript sur ce site. Le code source est disponible sur simple demande à Plushie.langage (à) free.fr
Afin de pouvoir analyser du texte et interagir, il est nécessaire de disposer d'une structure déjà chargée en mémoire, donc d'un fichier de boot.
Ce fichier, plusbase.mem est composé de 300 cellules mémoires environ, soit presque 600 adresses entières.
Il est de niveau 0, c'est à dire qu'il est modifiable pendant l'exécution du système (au prix de grandes précautions).
Il contient l'interpréteur de base fourni avec PLUSHIE, qui pourra être modifié ultérieurement pendant son exécution, et même totalement oublié.
L'interpréteur de base est lui-même écrit en PLUSHIE. Il est généré par un fichier de création de mémoire écrit en simili plushie d'environ 600 lignes, non fourni avec l'interface de démonstration.
Il peut être entièrement entré à la main, adresse par adresse.
L'algorithme de l'interpréteur actuel sera fourni sur simple demande à Plushie.langage (à) free.fr. Il est expliqué plus en détail ici-même.
Cet interpréteur n'est qu'une proposition. Il se veut minimaliste et ne présuppose l'existence d'aucun séparateur. La seule necessité est la connaissance d'un premier mot connu, programmé en dur dans le fichier mémoire de démarrage.
Éveil Lien Suite Éveildonne au mot clé Suite la valeur de l'adresse à laquelle le moteur de base donne toujours la valeur de la suite de l'adresse pointée par Suitede, puis
Suitede< Suiteexternalise un pointeur vers la variable Suitede. À partir de là, dès que Suitede recevra une valeur, Suite donnera la seconde adresse que cette valeur pointe.
Le niveau 1, ou éveil, sert à "externaliser" les variables de fonctionnement du niveau -1, c'est-à-dire à leur donner un nom sous forme d'une chaîne de caractères affichables (qui pourra être modifiée plus tard)
afin de pouvoir les adresser dans les fichiers de code au format .txt (en ANSI).
Suite contient l'adresse de la seconde case mémoire pointée par Suitede. Mémoirelibre contient la valeur de la prochaine adresse mémoire disponible. Pointeur de la chaîne d'exécution l'adresse ou le caractère affecté à Sortie est affiché à l'écran.
Variables minimales à nommer au niveau 1
Note : on peut donner le nom que l'on souhaite à ces variables dans le fichier ini.txt, ou en créer des alias plus tard.
Le niveau 2 du fichier ini.txt crée les premières fonctions fondamentales qui facilitent l'écriture des fonctions suivantes de niveau supérieur.
Les fichiers de code sont des fichiers au format texte brut (.txt en ANSI). Leur niveau de complexité dépend des fonctions de niveau inférieures utilisées.
La plupart des fichiers de code fournis nécessitent le chargement préalable du fichier ini.txt en mémoire pour être correctement exécutés.Par convention, on distingue les différentes couches nécessaires au fonctionnement de PLUSHIE par "niveaux de complexité". Les niveaux négatifs sont ceux qui ne peuvent pas être modifiés pendant l'exécution d'un programme en PLUSHIE.
Hardware
Niveau - 4Séquence de boot (BIOS)
Niveau - 3Système d'exploitation (Windows)
Niveau - 2Interface utilisateur (form Windows)
Niveau - 1Moteur automate écrit en vb.net
Niveau 0Fichier mémoire initial en PLUSHIE
Niveau 1Externalisation des variables
Niveau 2Fonctions primaires
Niveau 3 et plusCode avancé
Notons que les niveaux négatifs peuvent être remplacés par un automate en hardware (voir la proposition de définition de la complexité dans la page dédiée à venir).
Il détermine ensuite si les derniers caractères de la liste de lecture correspondent à un mot connu.
Si non, il continue à lire.
Si oui, il apprend le mot correspondant à la partie de la liste de lecture qui précède le mot connu, sous forme d'un
atome connu :
ensuite, il exécute immédiatement l'instruction principale de PLUSHIE: la copie en double indirection
Affiche Bonjour le monde À l'écran
Bonjour le monde
Ici, une nouvelle expression, Bonjour le monde, est définie puis utilisée immédiatement.
Voir la démo