PLCC-84 · 8372A · disegno, non fotografia
Chip dell'AmigaCommodore (MOS / CSG)
1985
Agnus / Alice
Il chip che comanda la memoria dell'Amiga, e che porta dentro di sé il Copper e il Blitter.
L'Agnus decide chi usa la memoria Chip e quando, e nasconde due coprocessori: il Copper, che cambia il video al ritmo del fascio dello schermo, e il Blitter, che copia e disegna blocchi di immagine senza occupare il processore. Si è evoluto dall'Agnus originale da 512 KB fino all'Alice dell'AGA, con 2 MB.
- 16
Una console fatta di breadboard
Tutto comincia nel 1982, alla Hi-Toro, la piccola azienda californiana che poco dopo prese il nome di Amiga Corporation. Jay Miner, che aveva già progettato i chip grafici dell'Atari 2600 e degli Atari a 8 bit, guidava l'hardware di una console dal nome in codice Lorraine, il nome della moglie di Dave Morse, il presidente dell'azienda.
Prima che ci fosse il silicio, i chip esistevano come mucchi di schede di prova (breadboard) piene di componenti comuni e collegate da un groviglio di fili. Si racconta che l'insieme riempisse un tavolo da cucina. Fu in questo stato che la Lorraine venne mostrata al CES di gennaio 1984.
All'inizio i tre chip si chiamavano Agnus, Daphne e Portia. L'Agnus fu l'unico a mantenere il nome; gli altri due sarebbero diventati il Denise e il Paula.
Il portinaio della memoria Chip
Nell'Amiga, l'immagine, il suono e i dati del floppy vivono in una memoria condivisa, la Chip RAM. Il processore e gli altri chip non possono toccarla a piacere: devono chiedere all'Agnus. Lui gestisce 25 canali DMA (accesso diretto alla memoria), il che significa che il video, il suono e il floppy vanno a prendersi i dati da soli, senza che il processore debba caricarli uno a uno.
Il trucco sta nella divisione del tempo. Il 68000 usa la memoria solo a cicli alterni, quindi l'Agnus dà i cicli dispari al video, al suono e al floppy e lascia quelli pari al processore. Nell'uso normale nessuno dei due si accorge dell'altro. Solo quando lo schermo usa molti colori in alta risoluzione, o quando il Blitter lavora a pieno ritmo, il processore resta in attesa.
Tutto questo va a tempo con lo schermo. L'unità di tempo dell'Agnus è il ciclo colore, di circa 280 nanosecondi, il tempo di due pixel in bassa risoluzione. L'Agnus tiene i contatori della posizione del fascio e può sincronizzarsi con un segnale video esterno (genlock), uno dei motivi per cui l'Amiga entrò così in fretta negli studi televisivi.
Il Copper: un coprocessore che pensa solo allo schermo
Il Copper (da coprocessor) è una piccola macchina che esegue un programma tutto suo, la copper list, in parallelo al processore. Conosce solo tre istruzioni: MOVE scrive un valore in un registro dei chip, WAIT aspetta che il fascio arrivi a una posizione dello schermo, e SKIP salta l'istruzione successiva se il fascio è già passato di lì. Ogni istruzione occupa 4 byte.
Sembra poco, ma è ciò che dà all'Amiga il suo aspetto. Poiché il Copper può cambiare i colori, la risoluzione o l'indirizzo dell'immagine a metà schermo, una riga può avere colori diversi dalla successiva: sono le barre di colore (raster bar) di tante demo e tanti giochi. È sempre il Copper che permette al Workbench di mostrare due schermi con risoluzioni diverse, uno sopra l'altro, nello stesso momento.
La lista riparte dall'inizio a ogni immagine, 50 volte al secondo in PAL. Non c'è un'istruzione di fine: si chiude con un WAIT su una posizione che il fascio non raggiunge mai. Mentre aspetta, il Copper lascia il bus e non consuma cicli di memoria.
Il Blitter: copiare, combinare, disegnare
Blitter viene da "block image transfer". Legge fino a tre blocchi di memoria (chiamati A, B e C), li combina bit per bit con una funzione logica a scelta e scrive il risultato in un quarto blocco, D. Le funzioni logiche possibili sono 256, e strada facendo ogni riga può essere spostata da 0 a 15 pixel. È così che si disegna un personaggio scontornato sopra lo scenario: la maschera dice dove il personaggio copre lo sfondo e dove lo lascia vedere.
I programmatori chiamavano bob (blitter object) questi personaggi disegnati dal Blitter, per distinguerli dagli sprite del Denise. Il Blitter traccia anche linee (con l'algoritmo di Bresenham) e riempie le aree tra le linee, e insieme questo dà poligoni pieni: la base dei vettori 3D delle demo. Perfino la lettura dei floppy lo usa, per decodificare i dati MFM di ogni traccia.
Nel chipset originale ogni operazione copre al massimo 1024 × 1024 pixel. Con il Blitter che copia finestre e grafica, il processore resta libero per altri compiti, ed è per questo che un 68000 a 7 MHz riusciva a muovere finestre e giochi con una fluidità che pochi computer dell'epoca avevano.
Da Agnus ad Alice: le revisioni
Il primo Agnus, dell'A1000 e del primo A2000, era in un package DIP a 48 pin: l'8361 per NTSC e l'8367 per PAL. Indirizza 512 KB di Chip RAM. Nel 1987, con l'A500 e il B2000, arrivò il Fat Agnus (8370 NTSC, 8371 PAL), in un PLCC quadrato a 84 pin. Resta limitato a 512 KB di Chip RAM, ma gestisce altri 512 KB di Slow RAM, la memoria della trapdoor dell'A500.
L'ECS portò l'8372A, che indirizza 1 MB di Chip RAM e funziona in PAL o NTSC. Comparve nelle ultime revisioni dell'A500 e del B2000 (dalla revisione 6 in poi) e nel CDTV. Gli 8372AB e 8372B dell'A3000 e varie versioni dell'8375 (A500 Plus e A600) arrivano a 2 MB. L'Agnus ECS fa anche blit fino a 32 768 × 32 768 pixel e ha contatori del fascio programmabili, che permettono modi video come il Productivity, 640 × 480 senza interlacciamento.
Nell'AGA il successore si chiama Alice (8374), e si trova nell'A1200, nell'A4000 e nel CD32. Indirizza 2 MB di Chip RAM e va a prendere i dati dell'immagine e degli sprite in parole da 32 bit e in modalità fast page, il che moltiplica per quattro la banda. Curiosamente, il Blitter e il Copper dell'Alice continuano a lavorare a 16 bit, proprio come nel 1985.
Perché l'Agnus ha contato
Senza il Copper e il Blitter non ci sarebbe la demoscene dell'Amiga: le barre di colore, gli schermi divisi, gli scroll fluidi e i vettori pieni vengono tutti da qui. Nei giochi, i bob del Blitter e le palette cambiate dal Copper a metà schermo davano più colore e più oggetti di quanto l'hardware sembrasse permettere.
Nel video, il genlock e una temporizzazione vicina a quella della televisione fecero dell'Amiga un generatore di sottotitoli ed effetti a buon mercato. Il Video Toaster di NewTek, che vinse un Emmy tecnico nel 1993, realizzava buona parte dei suoi effetti con l'aiuto del chipset dell'Amiga, sincronizzato con il segnale NTSC.
Lo sapevi che…
Si dice che Agnus venga da "Address GeNerator UnitS", le unità che generano gli indirizzi di memoria.
Si dice che i chip avessero nomi femminili perché gli ingegneri potessero parlarne in pubblico senza destare sospetti: chi avesse sentito parlare di Agnus o di Portia avrebbe pensato che fossero persone.
Il nome Fat Agnus (Agnus grasso) viene dal package: il PLCC a 84 pin è molto più largo del DIP originale. Quello da 1 MB c'è chi lo chiama Fatter Agnus.
Una copper list termina, per tradizione, con l'istruzione $FFFF,$FFFE: un WAIT su una posizione dello schermo che non arriva mai.
C'è un bit che dà al Blitter la priorità totale sul processore, lasciando il 68000 fermo ad aspettare. I programmatori lo chiamavano blitter nasty.
La scheda dell'A4000 ha un jumper segnato per 8 MB di Chip RAM. Non serve a nulla: l'Alice indirizza solo 2 MB, qualunque sia la posizione.
Mitchy, la cagnolina di Jay Miner, lo seguiva ovunque. Si racconta che, già ai tempi dell'Atari, avesse un badge da dipendente con il numero 000.
Prima dell'ECS, Commodore progettò un chipset più ambizioso, il Ranger. Fu cancellato nel 1989 perché troppo costoso, e al suo posto rimase l'ECS.
Il Copper in azione
Il Copper è un piccolo coprocessore dentro Agnus che segue il pennello dello schermo e cambia i registri a metà disegno. Cambiare il colore di sfondo a ogni riga, senza impegnare il processore, dà queste barre di colore: la firma delle demo Amiga.
MOVE #$0F00,COLOR00









