Contexte :
C'était à l'époque glorieuse du système Pick, ou beaucoup de concurrents se sont mis à porter le système sur leurs machines. La décision fut prise de concevoir "from scratch" une nouvelle génération de machines IN-Pick capable de performances propres à pulvériser les machines concurrentes.
En coordination avec l'équipe "Hardware", l'équipe "Software" a défini les nouvelles lignes de l'architecture de la machine.
Le processeur retenu a été le 68020 de chez Motorola. une équipe se chargerait d'écrire en 68020 un émulateur du code assembleur Pick.
La solution retenue introduisit en plus quelques changements sur l'architecture: code machine sur 4 octets (au lieu de 1 ou 2), taille des partitions de 2k au lieu de 512 octets, etc.
Je fus choisi pour définir l'architecture du Basic sur cette nouvelle machine, et avoir la charge de sa réalisation.
La machine (IN800-8000) est sortie en 1986.
Une fois cette tache achevée, je me suis à la fois attaché aux performances du compilateur, ainsi qu'à l'enrichissement des possibilités du meta-compilateur.
La route était alors ouverte pour l'ajout de quantités de fonctionnalités supplémentaires et révolutionnaires dans Basic quand Pick fut délaissé pour le "nouveau" système à la mode : Unix, ceci dans les années 1990,1991.
2 solutions ont été retenues en parallèle:
- Portage du code assembleur Pick existant pour assurer une compatibilité pour des utilisateurs n'ayant plus le code source de leurs applications basic.
- Re-définition et ré-écriture totale d'un nouveau basic (compilateur + interprète), sur-ensemble des fonctionnalités du précédent.
J'ai confié à une équipe le soin d'effectuer le portage du code existant, et je me suis plus particulièrement impliqué dans la réalisation du nouveau Basic.
Au vu de l'architecture de la nouvelle machine et de l'ancien Basic, j'ai décidé de coder l'interprète directement en code natif 68020. en effet cette solution permettait d'éliminer un double décodage des instructions: l'émulateur Pick interprété qui exécute l'interprète basic.
les partie retenues pour être codée en 6820 ont été:
- la partie décodage des instructions basic.
- l'automate de conversions.
- les instructions sur les entiers et les réels.
- la gestion de la pile d'exécution basic.
- etc.
En résumé, tout sauf le traitement des chaînes longues et des fichiers.
La partie native en 68020 a été appelé Basic Dédié... le reste en code assembleur Pick: le Basic Virtuel.
Il a fallu définir une interface entre ces 2 parties, et les coder. plusieurs personnes m'ont secondé pour l'écriture du virtuel, tandis que je me suis attaché a écrire et a optimiser le dédié.
Cette ré-écriture a permis d'enrichir très largement le langage, et d'enlever certaines limitations qui existaient alors. (taille du code généré, des variables, etc.)
Une fois le runtime du Basic terminé, je me suis attaché aux performances du meta-compilateur. la solution que j'ai retenue à été d'enrichir le runtime du Basic, ave des p-codes spécifiques au meta-compilateur, et de les implémenter directement en dédié 68020.
le runtime Basic et Meta fut alors unifié, avec des performances sans commune mesure avec ce qui existait alors...
L'étape suivante, a consisté a fusionner la grammaire de Meta et de Basic pour n'en former plus qu'une. cela a permis d'enrichir les fonctionnalités de Meta avec tout ce que basic permettait, et réciproquement. le résultat obtenu a été un langage sur-ensemble de Basic et de Meta, ce qui a permis d'ajouter des fonctionnalités dans les 2 langages.
|