RETRODREAMSAMIGA & SPECTRUM
Menu

← Tutti i chip

gary.chip

DIP-48 · 5719 · disegno, non fotografia

Chip dell'AmigaCommodore (MOS / CSG)

1987

Gary

La colla dell'Amiga 500: decide a chi appartiene ogni indirizzo e risponde al processore per tutti.

Il Gary è il chip di logica di collegamento di A500, A2000 e CDTV. Legge gli indirizzi che il 68000 mette sul bus, seleziona la memoria, la ROM, i CIA o i chip custom, e dà al processore la risposta di cui ha bisogno per chiudere ogni ciclo, anche quando all'indirizzo non c'è niente. Ha sostituito una manciata di chip sparsi dell'Amiga 1000.

Quello che nell'A1000 erano venti chip

Gary vuol dire gate array: una matrice di porte logiche incisa su misura. Nell'Amiga 1000 la logica che collega il 68000 ai chip custom era sparsa su decine di circuiti della serie 74 e di PAL. Per l'A500 e l'A2000, Commodore l'ha riunita in un solo chip a 48 pin, e la specifica lo descrive con modestia: "circuiti di controllo vari che forniscono interfaccia e controllo per sistemi con il chipset Amiga e un 68000".

Il chip ha due numeri. Il 5718 è andato nell'A2000 e il 5719 nell'A500 e nell'A500+, entrambi con il codice 318072-01. I primissimi A2000, di revisione 4, montavano un gate array prodotto da Toshiba, con difetti: i bollettini di assistenza di Commodore dicevano di sostituirlo con la versione MOS, diventata quella comune.

Negli A3000 e A4000, a 32 bit, il ruolo è passato al Fat Gary, un PLCC che fa lo stesso lavoro per un 68030 o un 68040. E negli A600 e A1200 il Gary è stato sostituito dal Gayle, che gli aggiunge IDE e PCMCIA.

Chi abita a ogni indirizzo

Il lavoro principale del Gary è guardare i sette bit di indirizzo più alti del 68000, da A17 ad A23, e decidere chi risponde. I primi 2 MB sono la Chip RAM; da $200000 a $9FFFFF c'è lo spazio delle schede Zorro II; a $BFxxxx stanno i due CIA; a $C00000 la memoria di espansione della botola, che esiste solo se la scheda A501 gli tira a zero il pin EXP; più su l'orologio in tempo reale e i registri dei chip custom; e in cima la ROM Kickstart. La mappa qui sotto lo mostra.

C'è un'eccezione che vive solo all'avvio: finché OVL è alto, il Gary risponde con la ROM agli indirizzi più bassi, perché il 68000 vi trovi il suo vettore di reset. È il CIA-A ad abbassare OVL, e da lì l'indirizzo zero torna a essere RAM.

Per ogni indirizzo, il Gary genera i segnali di selezione giusti: ROMEN per la ROM, RAMEN per la memoria video, RGAE per i registri dei chip custom, VPA, che dice al 68000 che sta parlando con una periferica di tipo 6800 (i CIA), e gli enable di lettura e scrittura dell'orologio.

I 16 MB che il chip decodifica
$000000$800000$FFFFFF
  1. $000000Chip RAM2 MB
  2. $200000Espansione Zorro II8 MB
  3. $A00000CIA ($BFD000, $BFE001)2 MB
  4. $C00000Memoria di espansione ($C00000)512 KB
  5. $C80000Senza uso nel chip1 MB
  6. $D80000Orologio in tempo reale256 KB
  7. $DC0000Senza uso nel chip192 KB
  8. $DF0000Registri dei chip ($DFF000)64 KB
  9. $E00000ROM Kickstart512 KB
  10. $E80000Senza uso nel chip1 MB
  11. $F80000ROM Kickstart512 KB

Righe: ROM agli indirizzi bassi all'avvio (OVL). Indirizzi a 24 bit; nella barra, i blocchi piccoli sono allargati per vederli. Fonte: Commodore, A500/A2000 Gary Specification.

La risposta che il 68000 aspetta

Il 68000 non termina un ciclo di memoria da solo: aspetta che qualcuno gli abbassi DTACK, l'avviso che i dati sono pronti. Se DTACK non arriva mai, il processore si ferma per sempre. Il Gary lo genera per tutti i dispositivi della scheda e anche per lo spazio di espansione, anche se lì non c'è niente: così un accesso a un indirizzo vuoto restituisce spazzatura invece di bloccare la macchina.

Due ingressi lasciano all'esterno la possibilità di cambiare questo. XRDY, tirato da una scheda di espansione, ritarda DTACK e inserisce stati di attesa per i dispositivi lenti. OVR spegne del tutto la decodifica interna e DTACK, perché una scheda prenda il posto di un dispositivo della scheda madre, come una ROM esterna, e risponda da sé. La specifica avverte che il trucco non serve a sostituire la Chip RAM né i registri dei chip: i tempi non sono affidabili.

Il Gary si mette in mezzo anche quando i chip custom fanno DMA. Se il processore prova ad andare sul bus video mentre l'Agnus lo sta usando, il Gary trattiene DTACK e il 68000 aspetta il suo turno. E quando il processore è nella zona di $C00000, attiva il segnale che rallenta il Blitter.

Amiga 500Amiga 500 · 1987
Foto: Bill Bertram · CC BY-SA 2.5 · Wikimedia Commons

E anche il floppy, il reset e i buffer

Oltre agli indirizzi, il Gary ha una serie di piccole funzioni che non stavano da nessun'altra parte. Controlla i buffer tra il bus del processore e il bus video, i segnali CDR, CDW e C4 che aprono i latch al momento giusto dei clock C1 e C3. Riceve il reset della tastiera, ed è lui a tirare le linee di reset e di halt del 68000.

E si occupa di un pezzo del lettore di floppy: memorizza lo stato del motore quando il lettore è selezionato, e ripete in buffer i segnali di scrittura e di motore che vanno al connettore. Per questo un lettore che non avvia il motore può avere la colpa nel Gary, e non solo nel CIA-B.

Il chip lavora a partire dai clock dell'Agnus: C1 e C3 a 3,58 MHz, sfasati di 90 gradi, e CDAC a 7,14 MHz. Non ha clock proprio né registri: è logica pura, e per questo non si programma, si collega soltanto.

Lo sapevi che…

  1. Senza il Gary, un 68000 che accedesse a un indirizzo vuoto resterebbe bloccato per sempre ad aspettare DTACK. È il Gary a garantire che tutti gli indirizzi, anche quelli senza niente dietro, rispondano.

  2. I primi A2000 montavano un Gary Toshiba difettoso. Commodore lo fece sostituire con quello MOS, e la specifica stessa ammette un caso in cui nessuno dei due rispetta i tempi.

  3. Il pin EXP è il modo in cui il Gary sa che c'è memoria nella botola: la scheda A501 lo collega a massa, e solo allora il Gary risponde all'indirizzo $C00000.

  4. Consuma al massimo 25 mA. Per un chip a 48 pin che partecipa a ogni ciclo del bus, è quasi niente.

  5. Il Fat Gary non è un Gary più grande: è un PLCC per A3000 e A4000, con un bus a 32 bit da decodificare, e due codici (4393 e 4791) per lo stesso lavoro.

Guasti in cui entra

Guide di diagnosi dell'esploratore di schede che misurano i segnali di questo chip, scheda per scheda.

Dove si trova

Fonti

  1. [1]A500/A2000 Gary Specification · Commodore · arquivo de Dave Haynie (espelho devili.iki.fi)
  2. [2]Gary 5718/5719 e Fat Gary (números de peça, máquinas, nota sobre a Toshiba) · Big Book of Amiga Hardware
  3. [3]A500 Service Manual (PN-314981-04) · Commodore, 1990
  4. [4]Amiga custom chips · Wikipédia