TINY BASIC: UN INTERPRETE BASIC SCRITTO IN BASIC

TINYBASIC: A BASIC INTEPRETER WRITTEN IN BASIC

 

Quando a metà degli anni '70 iniziarono ad essere prodotte le prime schede a microprocessore (6502, 8080 ecc.) con pochissima memoria a disposizione (tra 1K e 4K di RAM) si pose il problema della programmazione con un linguaggio che non fosse il solito Assembler e che potesse essere ad alto livello: la risposta fu Tiny Basic cioè un Basic derivato grosso modo dal Dartmouth Basic ma con sole variabili intere, un set di istruzioni semplificato e possibilità di collegamento col linguaggio macchina.

Tom Pittman della ITTY BITTY COMPUTERS Company riuscì nell'impresa di compattare in soli 2K un interprete Tiny Basic, cosicchè sulla maggior parte dei sistemi restavano altri 2K di memoria, corrispondenti a circa 100 linee di programma con le quali si potevano realizzare anche software abbastanza complessi.

Le prime versioni furono per i microprocessori 1802 per il COSMAC della RCA Corporation, 6502 per il KIM-1 della MOS Technology (poi acquisita dalla Commodore) e 6800 per il MIKBUG della Motorola. Seguirono poi altre versioni per l'ELF-II della Netronics, per lo Z-80 del Nascom (*) per i microprocessori 8080 (scritto in origine da Li Chen Wang e apparso sullla rivista "Doctor Dobb's Journal of Computer Calisthenics & Orthodontia" nel Maggio 1976) e 8086, anche se probabimente i Tiny Basic più famosi restano l'Integer Basic dell'AppleII e quello del Sinclair ZX80 uscito nel 1980 e che poi fu sostituito dall'interprete BASIC dello ZX-81 (che era disponibile in kit come aggiornamento anche per lo ZX80).

In tempi più recenti sono uscite versioni scritte da appassionati per i palmari della Palm e per il microcontroller Arduino (scritto in C) e avendo visto quest'ultime mi sono deciso a scrivere un Tiny Basic in Basic (più precisamente usando il classico Quick Basic 4.5) rispettando il più possibile il progetto originario: l'unica parte che è stata tolta è quella realtiva alla funzione USR di interfaccia con il linguaggio macchina mentre sono state aggiunte alcune funzionalità minime per integrarlo con MS-DSOS ed è stata migliorata la diagnostica.

Dopo alcune versioni sperimentali, l'obiettivo è stato raggiunto nel senso che TinyB (questo il nome dell'interprete) ha fatto girare i programmi originali praticamente senza modifiche (vedi ad esempio life.tib). Nella figura sotto l'help dell'interprete (versione a 64 bit):

Un esempio di programma TinyBasic che calcola i numeri di Fibonacci è il seguente:

: load fibo
: [Ok]
: list
5 REM SETUP THE VARIABLES, COUNTER, CURRENT VALUE AND LAST VALUE
10 LET I = 0
20 LET X = 1
30 LET Y = 0
35 REM DISPLAY THE CURRENT ITERATION AND VALUE
40 PRINT "FIB ", I," : ", X
45 REM ADD THE LAST VALUE TO THE CURRENT VALUE WHILE SAVING THE CURRENT VALUE
46 REM AS THE NEW LAST VALUE
50 LET Z = X
60 LET X = X + Y
70 LET Y = Z
75 REM INCREMENTING THE ITERATOR AND ABORTING WHEN IT'S TIME
80 LET I = I + 1
90 IF I <= 20 THEN GOTO 40
100 END

e produce il seguente output:

: run
FIB 0 : 1
FIB 1 : 1
FIB 2 : 2
FIB 3 : 3
FIB 4 : 5
FIB 5 : 8
FIB 6 : 13
FIB 7 : 21
FIB 8 : 34
FIB 9 : 55
FIB 10 : 89
FIB 11 : 144
FIB 12 : 233
FIB 13 : 377
FIB 14 : 610
FIB 15 : 987
FIB 16 : 1597
FIB 17 : 2584
FIB 18 : 4181
FIB 19 : 6765
FIB 20 : 10946
:

 

Download ed Installazione

Per il download basta cliccare sul link che segue: TINY BASIC INTERPRETER

E' sufficiente poi scompattare il tutto in una cartella qualsiasi: per lanciare l'interprete basta far eseguire TINYB5.EXE (per la versione a 16 bit) oppure TINYB5-64.EXE (per quella a 32/64 bit).

TINY BASIC is available in 16 bit or 32/64 bit version:
program, messages and documentation are in English.

 

(*) Per il Nascom sono riuscito a reperire ben tre versioni di Tiny Basic (da 2K e da 3K RAM) che sono state fatte girare sotto l'emulatore VNASCOM. Addirittura per il Nascom esisteva anche un compilatore Integer Pascal (!).  Su questa macchina e il suo emulatore torneremo presto.