posta - Amiga Magazine Online

posta - Amiga Magazine Online posta - Amiga Magazine Online

amigamagazine.info
from amigamagazine.info More from this publisher
16.06.2013 Views

1 O Capitolo 1 : Introduzione ad Amiga Drive Amiga, come è già stato detto in precedenza, è in grado di gestire un massimo di quattro disk drive. I drive possono essere sia da 5"1/4 che da 3111/2. I1 controllo dei drive avviene tramite una combinazione di porte su un chip 8520 e i DMA. Due porte sul 8520 selezionano il drive da cui mandare o ricevere i dati gestendo, tramite una serie di segnali la rotazione del motore, i mbvimenti delle testine, la presenza del disco o I i la protezione dalla scrittura. i Il trasferimento dei dati da e per il drive è realizzato tramite un canale DMA.

La gestione del Timer su Amga Antonello Biancalana Tre metodi per perdere sempre lo stesso tempo Antonello Biancalana lavoraper la ProMIND, una sofiwa- re house di Pemgia che sviluppa software grafico e musi- cale per Amiga, ed è sviluppatore Amiga registrato nella catego" "commercial". Di recente, Antonello Biancala- na, ha progettato e sviluppato MSPL (Music Synthesis Pro- gmmming Language), un particolare linguaggio di pro- grammazione rivolto alla sintesi sonora e musicale. Può accadere che, durante la scrittura dei nostri program- mi, si abbia bisogno di momenti di pausa, o comunque di controllare ed eseguire alcuni eventi dopo un certo periodo di tempo. L'errore più frequente che si commette nell'im- plementare i momenti di pausa all'interno di un program- ma, è quello di fare uso di cicli, come accade, per esempio, nelle istruzioni "C": oppure nell'equivalente codice assembler: m0ve.w #30000,dO wait: dbra do, wait entrambi gli esempi assicurano un certo periodo di ritardo che può soddisfare le nostre esigenze, ma in alcune circo- stanze il loro risultato sarà assolutamente imperfetto, pre- giudicando l'esecuzione dell'intero programma e, alle vol- te, l'utilizzo dello stesso. I1 motivo è semplice: supponiamo di sviluppare un nostro ipotetico programma su un Amiga 2000, che, come tutti sanno, utilizza il microprocessore Motorola 68000 a una frequenza di 7 MHz, e supponiamo anche che uno dei due esempi riportati sopra sia stato incluso nei nostro program- ma. Tutto funzionerà correttamente fino a quando il pro- gramma viene eseguito in un Amiga con caratteristiche simili, in tal caso le pause saranno esattamente come le volevamo. Immaginiamo ora che il programma venga eseguito in un Amiga 2000 con una scheda acceleratrice, o peggio ancora, su un Arniga 3000: il programma diventerà di colpo "ultraveloce", e, in alcuni casi, diventerà impossi- bile usarlo. E' chiaro che il ritardo ottenuto con gli esempi precedenti e strettamente dipendente dalla velocità del microprocessore usato, nonché dalla frequenza di clock dello stesso, ed è owio che il tempo di esecuzione dell'i- struzione assembler "dbra" sia notevolmente minore su un 68030 che su un 68000. Delay Per risolvere correttamente il problema, Amiga offre diver- se possibilità a seconda delle nostre esigenze. Se abbiamo bisogno di includere dei semplici momenti di pausa all'in- terno dei nostri programmi, potremo far ricorso alla funzio- ne Delay( ) supportata dalla "dos.library". I1 suo compito, infatti, è quello di fornire un certo periodo di ritardo determinato dal suo argomento. I1 periodo dovrà essere espresso in "tick" e, tenendo conto che ogni secondo è composto da 50 tick, il calcolo del tempo di attesa da fornire alla funzione è molto semplice. L'esempio n. 1 su disco comprende un semplice programma scritto in C, che utiliz- za appunto la funzione "Delay". Forse, alcuni lettori si meraviglieranno di non trovare nel programma il codice relativo all'apertura della "dos.library", dove risiede la funzione Delay( ): ricordiamo che i compilatori C per Amiga (Aztec, Lattice. ecc.) gestisco- no automaticamente l'apertura e la chiusura di questa libreria. Rispetto agli esempi precedenti, questa volta la quantità di tempo sarà sempre la stessa, indipendentemen- te dalla configurazione hardware in cui il programma viene eseguito, e sarà anche più precisa. I1 timer device Amiga, come sappiamo, possiede una struttura hardware e software dalle possibilità infinite (o quasi), per esempio il multitasking, le librerie di funzioni e i device. Proprio da uno dei device di Amiga otteniamo un metodo ancora più potente e accurato per la gestione dei tempi: il timer device. Questo va gestito come tutti gli altri device: prima deve essere aperto, poi gli si devono spedire i comandi necessari e, infine, si deve chiuderlo. L'uso del timer device permette di implementare dei ritardi molto più precisi di quanto consenta la funzione Delay( ) esaminata in precedenza. Può lavorare in due modalità diverse a seconda delle esigenze del programmatore e, inoltre, il suo uso consente al nostro programma di gestire altre risorse mentre attende che la richiesta di pausa sia

1 O Capitolo 1 : Introduzione ad <strong>Amiga</strong><br />

Drive<br />

<strong>Amiga</strong>, come è già stato detto in precedenza, è in grado di gestire un<br />

massimo di quattro disk drive. I drive possono essere sia da 5"1/4 che da<br />

3111/2. I1 controllo dei drive avviene tramite una combinazione di porte<br />

su un chip 8520 e i DMA. Due porte sul 8520 selezionano il drive da cui<br />

mandare o ricevere i dati gestendo, tramite una serie di segnali la<br />

rotazione del motore, i mbvimenti delle testine, la presenza del disco o I<br />

i<br />

la protezione dalla scrittura. i<br />

Il trasferimento dei dati da e per il drive è realizzato tramite un canale<br />

DMA.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!