# Tiny BASIC

Il Tiny BASIC è un dialetto del linguaggio di programmazione BASIC che è stato sviluppato tra il 1975 e il 1976 per i computer a 8 bit dell'epoca. Un suo punto di forza era la ridotta quantità di memoria occupata, variabile dai 2 ai 3 kB, un fattore molto importante in un periodo in cui gli elaboratori erano offerti con una dotazione di RAM che generalmente non superava i 4 kB. Da questo il nome Tiny, lett. "minuscolo".

## Sviluppo

La struttura del linguaggio fu inizialmente teorizzata da Dennis Allison, un membro della facoltà di informatica della Stanford University, su richiesta di Bob Albrecht, un membro dell'Homebrew Computer Club, che aveva visto il BASIC sui minicomputer e pensava che tale linguaggio fosse perfetto per i nuovi computer quali l'Altair 8800, che era stato presentato agli inizi del 1975.
Allison e Albretch pubblicarono la struttura del linguaggio sulla newsletter di People's Computer Company, un'organizzazione dedita alla diffusione della cultura del computer come strumento per aiutare le persone. Nel mese di dicembre del 1975 Dick Whipple e John Arnold crearono un interprete del linguaggio che richiedeva solo 3 kB di RAM. Allison e Albretch decisero di pubblicare questo interprete e le correzioni apportate alla struttura originale del linguaggio in una newsletter chiamata Dr. Dobb's Journal of Tiny BASIC Calisthenics and Orthodontia, poi divenuta la rivista Dr. Dobb's Journal edita da Jim Warren, un altro membro dell'Homebrew Computer Club.
La spinta a terminare e a pubblicare il Tiny BASIC fu data dalla pubblicazione della famosa Lettera aperta agli hobbisti che un giovane Bill Gates scrisse per denunciare la crescente diffusione della pratica di copiare il software piuttosto che acquistarlo. La lettera era indirizzata genericamente a tutti gli appassionati di computer, ma in realtà era diretta principalmente proprio verso l'Homebrew Computer Club, un membro del quale aveva trafugato durante un tour di presentazione dell'Altair 8800 una copia dell'Altair BASIC e lo aveva poi ridistribuito agli altri membri.
Bill Gates, nella sua lettera, sosteneva che la pirateria informatica non solo non ripagava gli autori del software delle loro fatiche in termini di rientro economico ma scoraggiava anche i programmatori dal continuare a produrre software di qualità. Warren rispose a Gates dalle colonne di SIGPLAN Notices, la newsletter pubblicata da Association for Computing Machinery (ACM):
«C'è una valida alternativa ai problemi del "furto" del software sollevati da Bill Gates nella sua rabbiosa lettera agli appassionati di computer. Quando il software è gratuito, o poco costoso, è più facile pagarlo che duplicarlo, così che non sia "rubato".»
(Jim Warren, SIGPLAN Notices (luglio 1976))
Warren annunciava la disponibilità del Tiny BASIC, i cui sorgenti erano copiabili dalla rivista Dr. Dobb's Journal oppure era possibile acquistarne una copia già pronta alla modica cifra di 5/10 dollari.

## Sintassi

La sintassi del Tiny BASIC è elencata qui sotto, in formato Backus-Naur. Nell'elenco un asterisco ("*") denota zero o più degli oggetti alla sua sinistra — tranne che per il primo asterisco nella definizione del "termine", che è il segno della moltiplicazione; le parentesi raggruppano gli oggetti; la lettera epsilon ("ε") indica un insieme vuoto. La barra verticale ("|") indica delle alternative, elencate su righe separate; il simbolo "CR" indica un carattere di ritorno carrello:
Fonte: "Dr. Dobb's Journal of Computer Calisthenics & Orthodontia", Volume 1, Numero 1, 1976, pag. 9.

## Implementazione

Il Tiny BASIC fu implementato come linguaggio interpretato usando un interprete che girava su una macchina virtuale: l'interprete traduceva le istruzioni scritte dall'utente in appositi comandi che poi eseguiva. L'interprete era scritto con gli stessi comandi che eseguiva. Quelli che seguono sono un esempio dei comandi eseguibili dall'interprete:
* TST etichetta, stringa: se "stringa" combacia con la linea BASIC, avanza il cursore oltre "stringa" ed esegue la prossima istruzione interpretata alla linea indicata da "etichetta", altrimenti esegue l'istruzione presente a "etichetta"
* CALL etichetta: esegue il codice presente a "etichetta"; salva l'indirizzo dell'istruzione dopo CALL nello stack
* RTN: riprende l'esecuzione dal punto specificato nel valore contenuto in cima allo stack;
* JUMP etichetta: continua l'esecuzione del programma dal punto indicato da "etichetta";
(fonte: "Dr. Dobb's Journal", Volume 1, Numero 1, 1976, pag.12.)

## Palo Alto Tiny BASIC

Il Palo Alto Tiny BASIC fu la quarta versione del Tiny BASIC che fu pubblicata su Dr. Dobb's Journal, esattamente sul nº 5 di maggio del 1976 della rivista. Fu scritta da Li-Chen Wang e, rispetto alle altre versioni del linguaggio, era quella che occupava meno memoria: solo 1,77 kB di RAM. Altre differenze riguardavano l'introduzione del supporto agli array (mediante l'uso del prefisso "@") e la possibilità di omettere il comando LET per le operazioni di assegnamento con le variabili. Infine, per risparmiare sullo spazio occupato dai listati in memoria, l'interprete accettava le forme abbreviate dei comandi: A. per ABS, P. per POKE, R. per RUN ecc.. Li-Chen scrisse anche una versione del gioco Star Trek con il suo BASIC che fu pubblicato sul numero di luglio del 1976 della newsletter People's Computer Company.
Il Palo Alto Tiny BASIC è anche da segnalare come uno dei primi software per cui fu utilizzato il concetto di copyleft, con esplicito riferimento ai diritti dei produttori software difesi da Bill Gates nella sua lettera aperta agli hobbisti pubblicata alcuni mesi prima, lettera in cui Gates accusava di violazione di copyright chi copiava il suo Altair BASIC.