Un interprete BASIC che parte direttamente all’avvio del PC, senza Windows, Linux o un altro sistema operativo sotto di sé. È l’idea alla base di Thoreau BASIC, progetto sperimentale pubblicato di recente. L’obiettivo non è inventare un nuovo linguaggio: l’autore riprende volutamente sintassi e filosofia di GW-BASIC, l’interprete Microsoft che negli anni ’80 accompagnò molti utenti nei primi passi con la programmazione, ma lo porta sulle macchine x86-64 dei giorni nostri sfruttando direttamente i servizi del firmware UEFI.
Thoreau BASIC offre un ambiente interattivo capace di gestire file, grafica, memoria, input e programmi BASIC senza appoggiarsi a un sistema operativo. Il firmware fornisce i servizi essenziali per accedere al disco e al framebuffer; l’interprete costruisce sopra questi meccanismi un ambiente che ricorda quello dei PC degli anni ’80, con una differenza non proprio marginale: al posto dei pochi kilobyte disponibili all’epoca può utilizzare quantità di RAM dell’ordine dei gigabyte.
Microsoft conserva oggi su GitHub il codice sorgente originale di GW-BASIC del 1983, scritto principalmente in assembly per Intel 8088/8086 (qui il codice di Microsoft 6502 BASIC). Thoreau BASIC non cerca di riprodurre quella piattaforma hardware: punta piuttosto a mantenere familiare il linguaggio. Sono presenti numerazione delle righe, GOTO, GOSUB, DATA, READ, RESTORE, DEF FN, gestione degli errori e molte delle costruzioni che caratterizzavano il BASIC Microsoft. A queste aggiunge tipi e capacità decisamente più adatti a un computer moderno.
Un BASIC che parte come applicazione UEFI
Nel caso di Thoreau BASIC non c’è un kernel Linux ridotto all’osso nascosto dietro l’interprete: il sistema gira nell’ambiente UEFI e utilizza le interfacce rese disponibili dal firmware. Il programma stesso è insomma un’applicazione EFI.
L’autore del progetto distribuisce infatti un eseguibile UEFI BASIC64.efi da circa 145 KB: per usarlo come applicazione di avvio su un supporto rimovibile, il progetto indica di rinominarlo in BOOTX64.EFI e collocarlo nel percorso \EFI\BOOT. È il nome standard che il boot manager UEFI può cercare sui sistemi x86-64 quando esegue il boot di fallback da un dispositivo rimovibile.
La specifica UEFI definisce protocolli attraverso i quali un’applicazione eseguita prima del sistema operativo può leggere file, ricevere input, mostrare testo, interrogare la grafica e accedere ad altre funzioni della macchina.
I comandi SAVE, LOAD, MERGE, FILES e KILL dell’interprete BASIC lavorano in questo caso direttamente sopra UEFI Simple File System Protocol. La specifica UEFI definisce questa interfaccia proprio per permettere al software eseguito durante la fase di boot di aprire un volume e accedere a file e directory attraverso EFI_FILE_PROTOCOL.
Più di una curiosità retrò
Thoreau BASIC non punta a sostituire Python, C, Rust o gli ambienti di sviluppo moderni, e giudicarlo con quel metro avrebbe poco senso. Il suo valore sta altrove: mostra quanto il firmware di un PC contemporaneo possa già offrire a un’applicazione sulla quale costruire altro software prima che entri in gioco il sistema operativo.
Intorno alle molteplici primitive di UEFI, l’autore del progetto ricostruisce progressivamente qualcosa che ricorda il computer personale di 40 anni fa: accendi, compare un interprete e cominci a programmare.
Ma la semplicità apparente nasconde una combinazione piuttosto insolita di tecnologie. Da una parte ci sono GOTO, numeri di riga, PEEK e POKE; dall’altra indirizzamento a 64 bit, framebuffer ad alta risoluzione, decine di gigabyte di RAM e firmware UEFI. È proprio questo cortocircuito tra due epoche a rendere Thoreau BASIC interessante anche per chi non prova particolare nostalgia per il BASIC.
Lo sviluppatore offre anche una versione per Windows ed è possibile effettuare il download sia gratuitamente che versando un piccolo riconoscimento in denaro per il lavoro svolto.