Atari BASIC: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Recupero di 1 fonte/i e segnalazione di 0 link interrotto/i.) #IABot (v2.0.9.3
 
(23 versioni intermedie di 15 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 1980|anni ottanta]]. L'interprete fu inizialmente distribuito su una [[cartuccia (supporto)|cartuccia]] da 8 [[byte|kB]] di [[Read-only memory|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]].<ref name="wilko">{{cita libro|cognome=Wilkinson|nome=Bill|anno=1983|titolo=The Atari BASIC Source Book|url=https://archive.org/details/ataribooks-the-atari-basic-source-book|editore=Compute! Books|idisbn=ISBN 0-942386-15-9}}</ref>
 
 
==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.
 
Riga 31:
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 [[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|bug noti]] noti e fu in seguito indicato come '''Revision A'''.
* '''Revision A'''&nbsp;&ndash; Prima versione della cartuccia dell'Atari BASIC (8 kB di ROM). Questa versione conteneva un bug nella [[Funzione (informatica)|funzione]] che copiava la memoria: in determinate circostanze, la cancellaturacancellazione delle righe del codice portava ada un blocco della macchina noto come "2-line lockup".<ref name=twoline>{{cita pubblicazioneRivistaVG|url=http://www.atarimagazines.com/compute/issue74/readers_feedback_10.phpc!|74|16|7|1986|titolo=Atari BASIC Bugs|rivista=Compute!|data=luglio 1986|pagine=10|accessons=05/08/201219}}</ref>
* '''Revision B'''&nbsp;&ndash; 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.<ref name=twoline/> Questa versione fu preinstallata all'interno dei modelli 600XL e nei primi 800XLs e non fu mai distribuita sotto forma di cartuccia.
* '''Revision C'''&nbsp;&ndash; Eliminava i problemi di gestione della memoria della precedente Revision B. Preinstallata negli 800XLs più recenti, negli 800XLF, negli XEGS ede 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 <code>PRINT PEEK(43234)</code> inserito al READY della macchina resistuivarestituiva <code>162</code> per la Revision A, <code>96</code> per la Revision B e <code>234</code> per la Revision C.
 
==Caratteristiche del linguaggio==
Riga 58:
L'interprete accettava per i nomi delle variabili i caratteri maiuscoli (65-90) ed i caratteri numerici (48-57), con il nome che doveva iniziare con una lettera. I nomi delle stringhe di testo dovevano terminare con il simbolo del dollaro, <code>$</code>.
 
L'insieme di caratteri conteneva anche i caratteri minuscoli ed alcuni caratteri grafici anche se poi la maggior parte dei linguaggiolinguaggi che furono resi disponibili per quei computer, compreso l'Atari BASIC, non riconoscevano i comandi scritti in lettere non maiuscole.
 
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 81:
 
===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&nbsp;#, CLOSE&nbsp;#, PRINT&nbsp;#, INPUT&nbsp;#, GET&nbsp;#, PUT&nbsp;#, NOTE&nbsp;#, POINT&nbsp;#</code> e <code>XIO&nbsp;#</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 rappresentevarappresentava l'editor stesso; il canale 6 era usato per accedere allo schermo in modalità grafica; il canale 7 era utilizzato per stampare e accedere al registratore a cassette mediante i comandi <code>LPRINT, SAVE, LOAD, CSAVE, CLOAD</code>.
 
===Grafica===
{{MainVedi anche|ANTIC}}
[[File:Atari-gr2-sl.png|thumb|right|250px|L'output di un programma che usa le modalità GRAPHICS 2 e 0.]]
I computer Atari ad 8 bit avevano un sofisticato sistema di gestione della grafica dovuto all'uso deidi appositi chip, l'[[ANTIC]] ed il [[CTIA_e_GTIACTIA e GTIA|CTIA]]: ciò perché originariamente i computer erano stati progettati per essere console giochi. Grazie ai 2 chip il sistema offriva diverse modalità grafiche ed era presente anche il supporto agli [[sprite (informatica)|sprite]].
 
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.
Riga 97:
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 una operazioniun'operazione con numeri interi vedeva eseguita continuamente la conversione da intero a virgola mobile e viceversa. Questo perché l'Atari BASIC si appoggiava alle funzioni di gestione dei numeri in virgola mobile predefinite all'interno del sistema operativo del computer, che oltretutto usavano la notazione [[Binary-coded decimal|BCD]] per la memorizzazione dei numeri per via del fatto che la CPU supportava nativamente tale formato.
 
Col tempo diversi produttori misero in commercio interpreti BASIC alternavialternativi con prestazioni da 3 a 5 volte superiori rispetto a quelle dell'Atari BASIC. Anche la stessa Atari rilasciò il BASIC che aveva iniziato a sviluppare sulla base del Microsoft BASIC, l'[[Atari Microsoft BASIC]], che aveva prestazioni superiori ma che non era compatibile con l'Atari BASIC.
 
==Note==
<references/>
 
==RiferimentiBibliografia==
*{{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 weblibro|autore=Bill Wilkinson|titolo=Inside Atari DOSBASIC - Manuale d'uso|editore=COMPUTE! BooksAtari|anno=19821983|idISBN=ISBN 0-942386-02-7|url=httphttps://www.atariarchivesarchive.org/iaddetails/introduction.php|accesso=05ataribasicmultilingualmanual/08page/2012n33}}
*{{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=TheInside Atari BASIC Source BookDOS|editore=COMPUTE! Books|anno=19831982|idisbn=ISBN 0-942386-1502-97|url=http://userswww.telenetatariarchives.beorg/kim1-6502iad/6502/absbintroduction.htmlphp|accesso=05/08/5 agosto 2012}}
* {{cita weblibro|url=http://www.atariarchives.org/dere/chapt10.php|titolo=De Re Atari|capitolo=10: ATARI BASIC|editoreautore=AtariArchivesChris Crawford et al.org|accesso=05/08/5 agosto 2012|anno=1982}}
* {{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/5 agosto 2012}}
* {{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/5 agosto 2012}}
 
==Voci correlate==
* [[Atari Microsoft BASIC]]
* [[BASIC]]
 
== Collegamenti esterni ==
*[http://emulators.com/xformer.htm XFormer, un emulatore Atari per MS-DOS e Windows]
*[ {{cita web|http://wwwemulators.atariarchivescom/xformer.org/dere/htm|XFormer, Deun Reemulatore Atari], unper manualeMS-DOS suie computer AtariWindows}}
* [http://www.atariarchives.org/dere/ De Re Atari], un manuale sui computer Atari
 
[[Categoria:BASIC]]
[[Categoria:Linguaggi di programmazione]]
 
{{Atari}}
{{portale|informatica}}
 
[[caCategoria:Atari BASIC]]
[[de:Atari BASIC]]
[[en:Atari BASIC]]
[[es:Atari BASIC]]
[[pl:Atari BASIC]]
[[pt:Atari BASIC]]