Présentation du projet

Thoreau BASIC 3.2 est un interprète gratuit de BASIC 64 bits disponible pour Windows x64 et pour le firmware UEFI x64. Il reprend la syntaxe numérotée de GW‑BASIC tout en intégrant des extensions modernes : graphiques 24 bits, sprites, entrée souris, pile TCP/IP/HTTP, et une banque sonore GM/GS compatible WAV, FLAC, Opus et MIDI. Le même binaire peut être exécuté comme programme Windows ou comme application EFI bootable, sans système d’exploitation sous‑jacent.

10 CLS
20 PRINT "HELLO FROM THOREAU BASIC"
30 FOR I=1 TO 5
40 PRINT I
50 NEXT I
60 END

Architecture et compilation JIT

Le cœur du moteur repose sur un compilateur JIT natif x64. La version 3.2 indique une réduction du travail en virgule flottante pour les opérations INT ainsi que pour les types complexes, quaternions et octonions, ce qui minimise les cycles de conversion et exploite les unités SIMD AVX2 ou SSE2 détectées via SYSTEMINFO$. Le JIT conserve le compteur TSC calibré, permettant une synchronisation temporelle précise lors de l’exécution de boucles parallèles (PARFOR). La fonction RUN peut relancer un script sans augmenter la pile de l’hôte, évitant ainsi les débordements de pile lors de redémarrages fréquents.

Fonctionnalités avancées

Thoreau BASIC expose des commandes de gestion de fichiers directement en BASIC : GETFILES récupère fichiers, dossiers et entrée parentale avec masque sensible à la casse, alors que SELECTBOX transforme un tableau de chaînes en sélecteur clavier‑souris multi‑colonnes, avec options de couleur et de bordure. Les chemins complets supportent jusqu’à 4 095 octets, bien que les limites du système de fichiers restent applicables. Les fonctions STATEWRITE et STATELOAD offrent un point de contrôle de variables avec deux générations alternées et checksum, tandis que FLUSH, FILECOMMIT et FILECOPY assurent des sauvegardes vérifiées. CRC32 calcule des sommes de contrôle sur des chaînes d’octets et TEXTSTATS compte mots et caractères dans des tableaux de chaînes.

Sur le plan audio, la banque wavetable Opus est convertie en PCM avant lecture ; aucune décompression n’est effectuée pendant la lecture, ce qui garantit une latence constante. L’option NOGM permet de générer des exécutables ou images EFI sans la banque sonore, réduisant la taille du binaire.

Implications, performances et limites

Le double mode (Windows/UEFI) montre la capacité du moteur à s’appuyer sur les interfaces firmware : GOP pour le rendu graphique, HID ou raw keyboard pour l’entrée, et le protocole SNP ou les protocoles firmware pour le réseau. Cette indépendance élimine la dépendance à un OS, mais implique que les performances réseau et graphique varient selon la qualité du firmware. L’utilisation du JIT SIMD dépend de la présence d’AVX2 ; sur des processeurs plus anciens, le moteur retombe sur SSE2, ce qui peut réduire le débit des calculs complexes. Aucun mécanisme de sandboxing n’est décrit, ce qui expose potentiellement les programmes BASIC à des accès directs au matériel lorsqu’ils s’exécutent en mode EFI. Enfin, la documentation reste limitée aux pages texte et aux notes de version, ce qui complique l’audit de sécurité et la prise en main pour les développeurs habitués aux environnements IDE modernes.