Atari BASIC: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 1:
{{Linguaggio di programmazione
|nome = Atari BASIC
Line 80 ⟶ 79:
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 rappresenteva 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===
{{Main|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 dei chip [[ANTIC]] e [[Atari CTIA|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.
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 una operazioni 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 alternavi 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/>
==Riferimenti==
*{{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 web|autore=Bill Wilkinson|titolo=Inside Atari DOS|editore=COMPUTE! Books|anno=1982|id=ISBN 0-942386-02-7|url=http://www.atariarchives.org/iad/introduction.php|accesso=05/08/2012}}
*{{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|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|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}}
==Voci correlate==
* [[Atari Microsoft BASIC]]
* [[BASIC]]
*[http://emulators.com/xformer.htm XFormer, un emulatore Atari per MS-DOS e Windows]
*[http://www.atariarchives.org/dere/ De Re Atari], un manuale sui computer Atari
[[Categoria:BASIC]]
|