Atari BASIC
L'Atari BASIC è un interprete del linguaggio di programmazione BASIC sviluppato per i computer ad 8 bit basati sul microprocessore MOS 6502 commercializzati da Atari, Inc. nei primi anni '80. L'interprete fu inizialmente distribuito su una cartuccia da 8 kB di ROM e successivamente venne integrato nella memoria dei modelli XL/XLE, che lo caricavano in automatico se il computer veniva avviato senza nessuna cartuccia inserita nell'apposita porta. Il codice sorgente dell'Atari BASIC, completo di commenti e delle specifiche di progetto, fu pubblicato in un libro nel 1983.[1]
Atari BASIC linguaggio di programmazione | |
---|---|
![]() | |
Autore | Shepardson Microsystems |
Data di origine | 1979 |
Ultima versione | Revision C (1983) |
Utilizzo | uso generico |
Paradigmi | programmazione generica |
Tipizzazione | forte |
Implementazione di riferimento | |
Licenza | software commerciale |
Le origini del linguaggio
Da console a computer
I sistemi che facevano parte della famiglia di computer Atari ad 8 bit furono inizialmente sviluppati come console giochi per sostituire l'Atari 2600. Lo sviluppo iniziò subito dopo l'inizio della commercializzazione della console, avvenuta nel 197, la cui vita utile era stata calcolata in circa 3 anni. Durante il 1977 apparvero però sul mercato i primi microcomputer assemblati, quali il Commodore PET, l'Apple II ed il Radio Shack TRS-80. Ray Kassar, che nel 1978 aveva assunto la presidenza della società, decise che Atari avrebbe dovuto provare ad inserirsi nel mercato dei computer domestici. Ciò comportava non solo rivedere tutti i sistemi trasformandoli in computer ma anche di dotarli del software necessario al loro uso, compreso un interprete del BASIC, il linguaggio di programmazione più diffuso fra il grande pubblico.
Il Microsoft BASIC
Atari si rivolse quindi alla società che all'epoca produceva l'interprete più diffuso, la Microsoft, per acquistare la licenza del suo interprete Microsoft 8K BASIC. La scelta della versione ad 8 kB dell'interprete fu dettata dal fatto che le ROM di allora avevano quel taglio massimo. Atari si accorse però che il valore di 8 kB presente nel nome della versione dell'interprete fornito per le CPU MOS 6502 non indicava la dimensione reale del sorgente: il Microsoft BASIC era nato sull'Intel 8080 ed il porting su 6502 aveva fatto lievitare il codice a 9 kB.
Atari si rese poi conto che doveva espandere il linguaggio per supportare meglio le caratteristiche hardware dei propri computer, come la Apple aveva fatto con il suo Applesoft BASIC. Questo passaggio incrementò la dimensione dell'interprete fino a 11 kB. A questo problema si sommava il fatto che il sorgente per 6502 del suo interprete non era documentato, cosa che rallentava il lavoro dei programmatori.
Lo sviluppo dei computer intanto proseguì e le macchine sarebbero risultate pronte per il debutto al Consumer Electronics Show (CES) del 1979. La riduzione del codice dell'interprete da 11 a 8 kB stava però dando molti problemi per cui Atari decise di rivolgersi ad un altro produttore di software.
Shepardson Microsystems
Nel mese di settembre del 1978 Atari contattò la Shepardson Microsystems, che aveva già scritto diversi programmi per gli Apple II (che usavano lo stesso processore dei futuri computer Atari) e che era quasi al termine della scrittura di un BASIC per i computer di Cromemco basati sul bus S-100 (il Cromemco 32K Structured BASIC), incaricandola di completare il suo interprete BASIC. Shepardson esaminò il lavoro fin lì svolto e concluse che sarebbe stato più semplice riscrivere da capo un interprete che potesse risiedere in 8 kB di memoria piuttosto che cercare di terminare la riduzione di quello già esistente. Atari accettò la proposta e quando le specifiche del linguaggio furono definite, nel mese di ottobre del 1978, Paul Laughton e Kathleen O'Brien si misero al lavoro sul nuovo interprete.
L'Atari BASIC
Il risultato fu un interprete del tutto differente, che fu denominato Atari BASIC. Il nuovo BASIC differiva in particolar modo nella gestione delle stringhe di caratteri: mentre il Microsoft BASIC le considerava come costanti, non più modificabili, l'Atari BASIC ne consentiva la modifica, permettendo di incrementare o decrementare le loro dimensioni.
Il contratto stipulato con Atari specificava la consegna entro il 6 aprile 1979 dell'interprete funzionante (ed anche di un gestore di file, che in seguito sarebbe stato noto come DOS 1.0). Per coprirsi le spalle Atari decise però di continuare a lavorare sulla riduzione del Microsoft BASIC in modo da averne una prima versione in tempo utile per il CES del 1979, mostrarlo alla fiera e poi passare all'Atari BASIC non appena questo fosse stato completato. Ma i bonus sui tempi di consegna fecero terminare a Shepardson il lavoro prima del tempo per cui Atari decise di portare al CES l'Atari BASIC, visto che era stato completato prima della conversione del Microsoft BASIC.
Versioni
I programmatori di Shepardson avevano lasciato nella prima versione dell'interprete alcuni problemi, e si erano prefissati di sistemarli in un secondo tempo. Ma Atari aveva già messo in fabbricazione le ROM dell'Atari BASIC e la tecnologia dell'epoca non permetteva cambi di programma. L'Atari BASIC fu perciò prodotto con dei bug noti e fu in seguito indicato come Revision A.
- Revision A – Prima versione della cartuccia dell'Atari BASIC (8 kB di ROM). Questa versione conteneva un bug nella funzione che copiava la memoria: in determinate circostanze, la cancellatura delle righe del codice portava ad un blocco della macchina noto come "2-line lockup".[2]
- Revision B – Corretta la maggior parte dei bug della Revision A. Durante la correzione del bug "2-line bug" i programmatori reintrodussero lo stesso errore in una funzione più comune, con il risultato che il numero di blocchi aumentò considerevolmente.[2] Questa versione fu preinstallata all'interno dei modelli 600XL e nei primi 800XLs e non fu mai distribuita sotto forma di cartuccia.
- Revision C – Eliminava i problemi di gestione della memoria della precedente Revision B. Preinstallata negli 800XLs più recenti, negli 800XLF, negli XEGS ed in tutti i computer XE. La versione su cartuccia fu prodotta in piccola serie.
Un programmatore poteva sapere la versione dell'interprete in uso esaminando una precisa locazione di memoria. Il comando PRINT PEEK(43234)
inserito al READY della macchina resistuiva 162
per la Revision A, 96
per la Revision B e 234
per la Revision C.
Note
- ^ Bill Wilkinson, The Atari BASIC Source Book, Compute! Books, 1983, ISBN 0-942386-15-9.
- ^ a b Atari BASIC Bugs, in Compute!, luglio 1986, p. 10. URL consultato il 05/08/2012.