# Applesoft BASIC

L'Applesoft BASIC, ufficialmente solo Applesoft, è un dialetto del BASIC sviluppato per i personal computer Apple II. È stato presentato nel 1977 come sostituto dell'integer BASIC. L'Applesoft BASIC è basato sul Microsoft BASIC ed il suo nome deriva dall'unione dei nomi delle due società che lo hanno sviluppato, Apple e Microsoft: i programmatori Apple, tra cui Randy Wigginton, hanno adattato l'interprete del BASIC Microsoft all'Apple II aggiungendo le funzionalità necessarie a sfruttare le caratteristiche del computer.

## Origini

L'Apple II fu mostrato al pubblico al West Coast Consumer Electronics Show del mese di aprile del 1977 e le vendite iniziarono nel mese di giugno. Il principale appunto che i clienti muovevano ad Apple era la carenza del supporto ai numeri in numeri in virgola mobile dell'Integer BASIC integrato nel computer e scritto da Steve Wozniak per l'Apple I, che era stata una macchina per hobbisti: l'Integer BASIC poteva trattare solo numeri compresi tra -32.768 e +32.767, un intervallo troppo limitato per scrivere applicazioni da usarsi negli uffici. Wozniak, l'unico che conosceva a fondo i sorgenti dell'Integer BASIC era però impegnato nello sviluppo del controller per il Disk II, una unità a floppy disk, e dell'Apple DOS, e non poteva sistemare il problema per cui Apple si rivolse a Microsoft, che aveva già sviluppato nel 1976 una versione per il microprocessore MOS 6502 del suo interprete BASIC. Le due società si accordarono per una licenza della durata di 8 anni dietro pagamento di una somma di 21.000 dollari.
Sviluppato dai programmatori Apple partendo dal Microsoft 6502 BASIC, l'Applesoft fu scritto per essere retrocompatibile con l'Integer BASIC. Nonostante fosse più lento di quest'ultimo, presentava diverse caratteristiche assenti nel primo:
* Stringhe atomiche: una stringa non è più un array di caratteri (come nell'Integer BASIC e nel C) ma è, invece, un oggetto dinamico (come nei linguaggi Scheme e Java). Questo permette l'uso di array di stringhe: DIM A$(10) genera un array di undici variabili di tipo stringa numerate da 0 a 10.
* Array a più dimensioni.
* Variabili in virgola mobile a precisione singola con esponente ad 8 bit ed una mantissa a 31 bit e funzioni matematiche avanzate come quelle logaritmiche e trigonometriche.
* Comandi per la gestione della grafica ad alta risoluzione.
* Funzioni CHR$, STR$ e VAL per la conversione fra i tipi stringa e quelli numerici (sia l'Applesoft BASIC che l'Integer BASIC avevano la funzione ASC).
* Funzioni predefinite dall'utente: semplici funzioni monoriga scritte in BASIC con un solo parametro.
* Gestione degli errori, grazie al quale i programmi potevano intercettare e gestire errori inattesi mediante routine scritte in BASIC.
Per contro, all'Applesoft mancava l'operatore MOD per il calcolo del modulo, presente invece nell'Integer BASIC.

## Versioni

La prima versione dell'Applesoft BASIC, indicato da Apple nei documenti e nei manuali ufficiali solo come Applesoft, fu messa in commercio nel 1977 e distribuita su nastro magnetico: uno dei suoi limiti era la mancanza di un adeguato supporto alla grafica ad alta risoluzione dell'Apple II perché l'interprete veniva caricato nell'area di memoria destinata normalmente ad accogliere l'immagine dello schermo in alta risoluzione, impedendo di fatto il suo utilizzo. Questa lacuna fu colmata con la creazione dell'Applesoft II, che vide la luce nel 1978: distribuita sia su nastro che su disco oltre che preinstallata nella ROM dell'Apple II Plus e modelli seguenti, questa versione presentava anche una diversa sintassi di alcuni comandi. Questa fu l'ultima distribuzione dell'Applesoft BASIC: poiché finalmente venivano supportate tutte le caratteristiche hardware dei computer Apple, è questa la versione comunemente indicata come Applesoft.