Atari BASIC: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
Recupero di 1 fonte/i e segnalazione di 0 link interrotto/i.) #IABot (v2.0.9.3 |
||
(27 versioni intermedie di 17 utenti non mostrate) | |||
Riga 10:
}}
L''''Atari BASIC''' è un [[linguaggio interpretato|interprete]] del [[linguaggio di programmazione]] [[BASIC]] sviluppato per i [[Famiglia Atari 8-bit|computer ad 8 bit]] basati sul [[microprocessore]] [[MOS 6502]] commercializzati da [[Atari, Inc.]] nei primi [[anni
==Le origini del linguaggio==
Line 18 ⟶ 17:
===Il Microsoft BASIC===
{{vedi anche|Atari 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 BASIC|Microsoft 8K BASIC]]. La scelta della versione ad 8 kB dell'interprete fu dettata dal fatto che le [[Read-Only Memory|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 [[portabilità|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.
Riga 26:
===Shepardson Microsystems===
[[File:Basic computing language for Atari 8-bit computers.jpg|thumb|La cartuccia da 8 kB di ROM dell'Atari BASIC per i computer Atari ad 8 bit]]
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 [[S-100|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 [[Stringa (informatica)|stringhe di caratteri]]: mentre il Microsoft BASIC ne consentiva la modifica, permettendo di incrementare o decrementare le loro dimensioni, l'Atari BASIC le considerava come costanti, non più modificabili.
Il contratto stipulato con Atari specificava la consegna entro il
===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
* '''Revision A'''
* '''Revision B'''
* '''Revision C'''
Un programmatore poteva sapere la versione dell'interprete in uso esaminando una precisa locazione di memoria. Il comando <code>PRINT PEEK(43234)</code> inserito al READY della macchina
==Caratteristiche del linguaggio==
Riga 51:
A differenza di altri interpreti, l'Atari BASIC permetteva di eseguire tutti i comandi sia durante l'esecuzione del sorgente che in modalità immediata. Ad esempio, <code>LIST</code>, che mostrava il listato sorgente presente in memoria se inserito in modalità immediata, funzionava anche se richiamato dall'interno del programma stesso. Questo modo di interpretare i comandi era utile nel caso si fosse voluto scrivere del codice auto-modificante.
Ogni riga del programma (le "righe logiche") potevano occupare fino a 3 righe dello schermo (le "righe fisiche") da 40 caratteri ciascuna, per un totale di 120 caratteri. Il cursore poteva essere mosso liberamente all'interno di queste righe, a differenza degli editor di altri BASIC dove per andare "su" in una riga di programma bisognava per forza scorrere a sinistra finché il cursore non arrivava al bordo e proseguiva dalla fine della riga precedente dello schermo (la stessa cosa per scorrere "giù"). Il cursore poteva essere mosso liberamente all'interno dello schermo, e se usciva da un lato ricompariva dall'altro.
===L'insieme di caratteri===
L'Atari usava un insieme di caratteri leggermente modificato rispetto alla tabella [[ASCII]], denominata [[ATASCII]]. I primi 128 caratteri corrispondevano per la maggior parte a quelli ASCII, con l'eccezione che tutti i caratteri erano stampabili, anche quelli con i codici da 0 a 31, che nella tabella ASCII non lo erano perché corrispondenti a "codici di controllo" che eseguivano operazioni particolari come ad esempio il ritorno a capo. I caratteri dal 128 al 255 erano la visualizzazione inversa dei primi caratteri da 0 a 127.
L'interprete accettava per i nomi delle
L'insieme di caratteri conteneva anche i caratteri minuscoli ed alcuni caratteri grafici anche se poi la maggior parte dei
Nelle ROM della Revision C dell'interprete fu inserito un insieme di caratteri alternativo che comprendeva anche le lettere accentate, pensato per l'uso in [[Europa]].
Riga 76:
===Gestione delle stringhe===
L'Atari BASIC gestiva le stringhe in maniera completamente diversa rispetto ai BASIC stile Microsoft. In questi ultimi le stringhe potevano essere di lunghezza variabile e permettevano diverse operazioni mentre l'Altair BASIC usava l'approccio del [[Fortran]], ossia le stringhe
Nonostante questo modo di gestione delle stringhe fosse molto elegante, comportava però dei problemi quando si dovevano portare sull'Atari BASIC programmi scritti per altri interpreti dato che non solo si dovevano considerare le istruzioni <code>LEFT$</code>, <code>RIGHT$</code> e simili usate dai BASIC in stile Microsoft ma anche il fatto che la dimensione di una stringa in Atari BASIC era stabilita a priori.
===Input/Output===
L'Atari BASIC supportava l'accesso al CIO (Central Input/Output), che nel [[sistema operativo]] dei computer Atari si occupava dell'accesso alle periferiche di [[input/output]], con le parole chiave <code>OPEN #, CLOSE #, PRINT #, INPUT #, GET #, PUT #, NOTE #, POINT #</code> e <code>XIO #</code>, seguiti dal numero del canale che si intendeva utilizzare. I canali che il CIO offriva erano 8, numerati da 0 a 7 ma alcuni non erano disponibili all'utente perché riservati dal sistema: il canale 0
===Grafica===
{{
[[File:Atari-gr2-sl.png|thumb
I computer Atari ad 8 bit avevano un sofisticato sistema di gestione della grafica dovuto all'uso
Purtroppo l'Atari BASIC non metteva a disposizione comandi per gestire direttamente gli sprite ma ciò era comunque fattibile mediante l'uso di [[PEEK e POKE]] con cui leggere e scrivere direttamente nei registri del CTIA. Il risultato non era però dei migliori perché il chip grafico supportava lo scorrimento orizzontale degli sprite ma non quello verticale per cui usando l'Atari BASIC, che era molto lento nello spostamento di blocchi di dati in memoria, nel caso di scorrimenti verticali si ottenevano prestazioni scarse. Per gestire questo problema i programmatori ricorrevano ad un paio di trucchi: usavano piccole funzioni scritte direttamente in [[linguaggio macchina]] oppure memorizzavano i dati degli sprite in stringhe e poi usavano le funzioni di copia delle stringhe, che erano funzioni in linguaggio macchina e quindi eseguite molto velocemente.
I comandi per gestire la grafica erano: <code>COLOR</code>, <code>SETCOLOR</code>, <code>CLEAR</code>, <code>PLOT</code>, <code>DRAWTO</code>, <code>LOCATE</code> e <code>GRAPHICS</code>. Mancava un comando <code>FILL</code> per riempire una determinata area con un colore, strana mancanza dato che il sistema operativo aveva una funzione per eseguire questa operazione.
===Prestazioni===
Se paragonato ad altri interpreti preinstallati su computer similari dell'epoca, l'Atari BASIC risultava estremamente lento, specialmente se si considera che il MOS 6502 operava ad una frequenza quasi doppia rispetto agli altri sistemi. La maggior parte di questi problemi di lentezza derivava da diversi motivi che traevano origine dalla natura stessa del codice e del sistema.
Il primo motivo era che l'Atari BASIC poteva usare variabili al posto dei numeri di riga nelle istruzioni di salto <code>GOTO</code> e <code>GOSUB</code>, e ciò comportava un aggravio di calcoli nella funzione di ricerca del numero di riga. Inoltre l'interprete non generava un errore nel caso la riga indicata non esistesse ma l'esecuzione proseguiva alla riga immediatamente successiva. Questo comportamento veniva adottato per implementare il comportamento di <code>NEXT</code> nel ciclo <code>FOR</code>...<code>NEXT</code>, rallentandone l'esecuzione.
Il secondo motivo risiedeva nel fatto che l'Atari BASIC non gestiva nativamente i numeri interi: tutti i numeri, anche i numeri di riga, erano numeri in virgola mobile per cui
Col tempo diversi produttori misero in commercio interpreti BASIC
==Note==
<references/>
==
*{{cita libro|autore=|titolo=Atari 400-800 - Manuale di riferimento del linguaggio Basic per l'elaboratore personale Atari|editore=Atari|anno=1982|url=https://archive.org/details/atari400800manualediriferimentodellinguaggiobasic}}
*{{cita libro|autore=Bill Wilkinson|titolo=The Atari BASIC Source Book|editore=COMPUTE! Books|anno=1983|id=ISBN 0-942386-15-9|url=http://users.telenet.be/kim1-6502/6502/absb.html|accesso=05/08/2012}}▼
*{{cita
*{{cita libro|autore=Bill Carris|titolo=Basic Atari|editore=Gruppo Editoriale Jackson|anno=1985|ISBN=|url=https://archive.org/details/basicatari}}
*{{cita web|url=http://www.atariarchives.org/dere/chapt10.php|titolo=De Re Atari|capitolo=10: ATARI BASIC|editore=AtariArchives.org|accesso=05/08/2012}} ▼
*{{cita libro|autore=Gary Ryan, Cliff McConnell|titolo=Altri giochi per il vostro Atari|editore=Gremese Editore|anno=1985|ISBN=88-7605-153-8|url=https://archive.org/details/altrigiochiperilvostroatari}}
*{{cita libro|url=http://www.atariarchives.org/basic/|titolo=Atari Basic - A Self-Teaching Guide|autore=Bob Albrecht|coautori=LeRoy Finkel, Jerald R. Brown|anno=1979|editore=Wiley Microcomputer Guides|accesso=05/08/2012}}▼
* {{cita libro|autore=Bill Wilkinson|titolo=The Atari BASIC Source Book|editore=COMPUTE! Books|anno=1983|isbn=0-942386-15-9|url=http://users.telenet.be/kim1-6502/6502/absb.html|accesso=5 agosto 2012|dataarchivio=26 luglio 2012|urlarchivio=https://web.archive.org/web/20120726155045/http://users.telenet.be/kim1-6502/6502/absb.html|urlmorto=sì}}
*{{cita libro|url=http://www.atariarchives.org/basicxl/|titolo=Atari Basic - XL Edition|autore=Bob Albrecht|coautori=LeRoy Finkel, Jerald R. Brown|anno=1985|accesso=05/08/2012}}▼
▲* {{cita libro|autore=Bill Wilkinson|titolo=
▲* {{cita
▲* {{cita libro|url=http://www.atariarchives.org/basic/|titolo=Atari Basic - A Self-Teaching Guide|autore=Bob Albrecht|coautori=LeRoy Finkel, Jerald R. Brown|anno=1979|editore=Wiley Microcomputer Guides|accesso=
▲* {{cita libro|url=http://www.atariarchives.org/basicxl/|titolo=Atari Basic - XL Edition|autore=Bob Albrecht|coautori=LeRoy Finkel, Jerald R. Brown|anno=1985|accesso=
==Voci correlate==
* [[Atari
* [[BASIC]]
== Collegamenti esterni ==
*
* [http://www.atariarchives.org/dere/ De Re Atari], un manuale sui computer Atari
{{Atari}}
{{portale|informatica}}
[[
|