Coup de projecteur rétro: John Grant et Sinclair BASIC

illustrations illustrations illustrations illustrations illustrations illustrations illustrations
post-thumb

Publié le 25 avril 2024 par Andrew Owen (7 minutes)

Au début du mois, Zilog a annoncé l’arrêt de la production du microprocesseur Z80 après 48 ans de production. Par coïncidence, 48 est le nombre de kilo-octets de mémoire vive du micro-ordinateur ZX Spectrum basé sur le Z80, qui, autre coïncidence, a été commercialisé il y a 42 ans ce mois-ci. Cette divagation numérologique n’a probablement de sens que si vous êtes un fan du “Guide du voyageur galactique” (voir l’article de la semaine dernière) et que vous lisez ce paragraphe avec la voix de Peter Jones. Si ce n’est pas le cas, pas de panique. Pour raconter l’histoire de Sinclair BASIC, il est préférable de raconter l’histoire de certains de ses créateurs. Un humain de la planète Terre était l’un d’entre eux. Il s’appelle John Grant.

Le 1er mai de cette année, le langage BASIC aura 60 ans. J’ai déjà écrit sur les premiers jours de BASIC et sur le développement des micro-ordinateurs Sinclair. J’ai décrit le rôle essentiel joué par Grant dans le développement du Spectrum. Cette fois-ci, je voudrais donner un peu de contexte et examiner ce qui fait de Sinclair BASIC une nouvelle version du langage. La Silicon Valley californienne est connue dans le monde entier, mais dans les années 1970, ce que l’on a appelé la Silicon Fen se développait à Cambridge, en Angleterre. Ce qui a commencé avec la création du parc scientifique de Cambridge en 1970 est devenu la plus grande concentration d’entreprises technologiques et biomédicales d’Europe, avec plus de 5 000 sociétés.

L’une des premières entreprises encore en activité est Nine Tiles (en référence à la main à neuf carreaux du Mah-jong qui permet d’obtenir le score maximum), fondée par Grant. Pendant la plus grande partie de son histoire, il s’agissait d’une société de mise en réseau, mais à ses débuts, elle a créé trois versions successives de Sinclair BASIC. Clive Sinclair a rencontré Grant en avril 1979 pour discuter d’un interprète BASIC pour le micro-ordinateur ZX80. Grant n’avait aucune illusion quant à la possibilité de gagner de l’argent avec ce projet, mais il pensait que Nine Tiles aurait tout à gagner à y être associé.

Pour atteindre le prix de lancement de 79,95 £ en kit, la RAM a été limitée à 1K et le BASIC entier a dû être entassé dans une ROM de 4K. Grant a écrit la plus grande partie du programme entre juin et juillet. Mais le programme résultant faisait 5K de long, et il a donc passé le mois d’août à élaguer le code. Il a préparé le terrain pour les choses à venir, en introduisant de nombreuses caractéristiques du Sinclair BASIC qui ne sont pas courantes dans d’autres dialectes, y compris:

  • Entrée par jeton : Les mots-clés sont directement associés aux touches, ce qui évite d’avoir à les taper et d’avoir à les convertir en jetons.
  • Contrôle syntaxique à l’entrée : L’interpréteur refuse que la plupart des erreurs de syntaxe soient introduites dans le programme, et signale l’endroit où se trouve l’erreur dans la ligne avant qu’elle ne soit introduite. Il s’agit d’une caractéristique partagée avec Atari BASIC (également écrit en 1979) qui facilite grandement l’apprentissage et l’utilisation.
  • Évaluation permanente des expressions : Toute variable peut être remplacée par une expression.
  • Tableaux à base de caractères (par opposition aux tableaux à base de chaînes de caractères plus courants dans les autres dialectes).
  • Logique booléenne (par opposition à la logique bit à bit utilisée dans les variantes de Microsoft).

Certaines commandes BASIC courantes ont dû être sacrifiées pour des raisons d’espace. Il n’y avait pas de ON, END, DATA, READ ou RESTORE. En janvier 1980, Grant engagea le mathématicien Steve Vickers qui écrirait la ROM du ZX81, en réutilisant une grande partie du travail antérieur de Grant. Pour la ROM du Spectrum, Sinclair souhaitait que le code du ZX81 soit le moins modifié possible. Mais Grant voulait que le code soit réécrit, estimant qu’un logiciel conçu pour une machine de 1K n’était pas adapté à une machine de 16K et que des problèmes surviendraient plus tard. Mais à chaque fois, Sinclair voulait un maximum de nouvelles installations pour un minimum d’argent.

Douze mois plus tard, le BASIC était pratiquement terminé. Il était grandement amélioré, mais d’une lenteur déprimante. Le support des périphériques était absent car Sinclair n’avait pas fourni de prototype fonctionnel avant la fin de l’année 1981. En février 1982, il est apparu clairement que Sinclair n’avait pas l’intention de payer des royalties pour le travail (en fin de compte, Nine Tiles n’a pas été payé jusqu’à ce qu’Amstrad achète les droits de la ROM en même temps qu’il rachetait Sinclair Research). Puis Steve Vickers et Richard Altwasser, le concepteur de matériel de Sinclair, ont tous deux démissionné pour lancer le projet Jupiter ACE. En conséquence, Sinclair a livré le Spectrum avec une ROM incomplète dont certaines fonctionnalités étaient tronquées.

L’ampleur exacte de cette situation est devenue évidente lorsque Grant et sa femme Kate ont fait don d’un prototype de ZX Spectrum au Centre for Computing History, qui a réussi à extraire la ROM prototype. Grâce à Daniel Nagy, qui l’a désassemblée, nous savons maintenant qu’elle permettait à l’origine d’utiliser des flux avec les commandes de fichiers. Grant est une personne généreuse et je lui suis personnellement reconnaissant de m’avoir donné la permission de distribuer les ROMs ZX80 et ZX81, dont Nine Tiles détient toujours les droits, sous une licence open source. C’est en grande partie ce qui a rendu possible la production d’un firmware open source pour le Spectrum.

Mais je n’ai pas été le premier à approcher Grant pour obtenir une licence sur la ROM ZX81 de Vickers. Andy Wright a fondé BetaSoft en 1983 pour vendre BetaBASIC pour le Spectrum. Ce qui avait commencé comme une boîte à outils est devenu une version complète de BASIC. La saisie de mots-clés à une touche était optionnelle et le code était automatiquement indenté, des caractéristiques qui allaient être ajoutées au Spectrum 128 d’Investronica (bien que l’indentation ait été abandonnée dans le modèle britannique). Il prenait en charge un écran de 64 colonnes (auparavant uniquement disponible sur le TS2068 avec la cartouche ZebraOS). Il offrait une programmation structurée complète, des procédures et des fonctions nommées et des variables locales. Les numéros de ligne étaient optionnels. Le développement s’est poursuivi jusqu’en 1987.

Après cela, Wright a été engagé par MGT pour fournir le BASIC pour le SAM Coupe (une machine compatible avec le Spectrum de Welsh avec diverses améliorations matérielles). Pour ce faire, il a commencé avec BetaBASIC et a progressivement remplacé les dépendances de la ROM Spectrum. Il a approché Grant pour obtenir la licence de la bibliothèque de virgule flottante de la ROM ZX81, mais ils n’ont pas réussi à se mettre d’accord, et il a donc écrit la sienne.

En raison de contraintes de mémoire, SAM BASIC ne disposait pas de certaines fonctions de BetaBASIC, mais Wright créa plus tard un BASIC amélioré pour le SAM appelé MasterBASIC. Soit dit en passant, MGT a également fourni un outil pour télécharger la ROM Spectrum sur le SAM appelé The Messenger. Il était accompagné d’une version inversée du code de chargement de la bande du Spectrum. Ce code a probablement été écrit par Wright. Je lui dois également une dette de gratitude car il a non seulement publié le code source complet de la ROM SAM, dont il détient toujours les droits, mais il m’a également donné la permission de le distribuer sous une licence open source.

En commençant par la ROM ZX81 et les routines originales de SE BASIC (ma version améliorée de la ROM Spectrum). J’ai pu réutiliser les routines de bande de The Messenger et un certain nombre de routines de SAM BASIC pour créer une version open source. En utilisant la même technique de rétro-ingénierie que The Messenger, j’ai pu créer un firmware Spectrum entièrement open source. Maintenant que Comcast a fermé la porte à toute licence future de la ROM originale, OpenSE BASIC fournit une alternative pour les clones légaux.

OpenSE BASIC a également servi de base à SE BASIC IV, utilisé dans le projet Chloe 280SE, mais ce dialecte est beaucoup plus proche d’Atari BASIC. Pour ceux qui recherchent un interprète Sinclair BASIC amélioré fonctionnant sur du matériel moderne, le meilleur choix est [SpecBAS] de Paul Dunn (https://github.com/ZXDunny/SpecBAS “SpecBAS”). Il nécessite Windows, mais devrait fonctionner sous WINE sur les versions Intel de Linux. Sur les Macs à base d’ARM, vous pouvez essayer de l’exécuter dans un environnement X86-64 émulé en utilisant UTM.