DIP-48 · 5719 · desenho, não fotografia
Chips do AmigaCommodore (MOS / CSG)
1987
Gary
A cola do Amiga 500: decide a quem pertence cada endereço e responde ao processador por todos.
O Gary é o chip de lógica de cola dos A500, A2000 e CDTV. Lê os endereços que o 68000 põe no bus, seleciona a memória, a ROM, os CIAs ou os chips personalizados, e dá ao processador a resposta de que ele precisa para fechar cada ciclo, mesmo quando não há nada no endereço. Substituiu uma mão-cheia de chips soltos do Amiga 1000.
O que no A1000 eram vinte chips
Gary quer dizer gate array: uma matriz de portas lógicas gravada à medida. No Amiga 1000 a lógica que liga o 68000 aos chips personalizados estava espalhada por dezenas de circuitos da série 74 e por PALs. Para o A500 e o A2000, a Commodore juntou-a toda num chip de 48 pinos, e a especificação descreve-o com modéstia: "circuitos de controlo diversos que fazem a interface e o controlo de sistemas com o chipset do Amiga e um 68000".
O chip tem dois números. O 5718 foi para o A2000 e o 5719 para o A500 e o A500+, ambos com a peça 318072-01. Os primeiros A2000, da revisão 4, levavam um gate array feito pela Toshiba, com defeitos: os boletins de assistência da Commodore mandavam trocá-lo pela versão da MOS, que passou a ser a comum.
Nos A3000 e A4000, de 32 bits, o papel passou para o Fat Gary, um PLCC que faz o mesmo trabalho para um 68030 ou 68040. E nos A600 e A1200 o Gary foi substituído pelo Gayle, que lhe junta o IDE e o PCMCIA.
Quem mora em cada endereço
O trabalho principal do Gary é olhar para os sete bits de endereço mais altos do 68000, de A17 a A23, e decidir quem responde. Os primeiros 2 MB são a Chip RAM; de $200000 a $9FFFFF é o espaço das placas Zorro II; em $BFxxxx estão os dois CIAs; em $C00000 a memória de expansão do alçapão, que só existe se a placa A501 lhe puxar o pino EXP a zero; mais acima o relógio de tempo real e os registos dos chips personalizados; e no topo a ROM Kickstart. O mapa mais abaixo mostra-o.
Há uma exceção que só vive no arranque: enquanto o OVL estiver alto, o Gary responde com a ROM nos primeiros endereços, para o 68000 encontrar lá o seu vetor de reset. É o CIA-A que baixa o OVL, e a partir daí o endereço zero volta a ser RAM.
Para cada endereço, o Gary gera os sinais de seleção certos: o ROMEN para a ROM, o RAMEN para a memória de vídeo, o RGAE para os registos dos chips personalizados, o VPA que diz ao 68000 que está a falar com um periférico do tipo 6800 (os CIAs), e os enables de leitura e escrita do relógio.
- $000000Chip RAM
- $200000Expansão Zorro II
- $A00000CIAs ($BFD000, $BFE001)
- $C00000Memória de expansão ($C00000)
- $C80000Sem uso no chip
- $D80000Relógio de tempo real
- $DC0000Sem uso no chip
- $DF0000Registos dos chips ($DFF000)
- $E00000ROM Kickstart
- $E80000Sem uso no chip
- $F80000ROM Kickstart
Riscas: ROM nos primeiros endereços no arranque (OVL). Endereços de 24 bits; na barra, os blocos pequenos estão alargados para se verem. Fonte: Commodore, A500/A2000 Gary Specification.
A resposta que o 68000 espera
O 68000 não termina um ciclo de memória sozinho: espera que alguém lhe baixe o DTACK, o aviso de que os dados estão prontos. Se o DTACK nunca vier, o processador fica parado para sempre. O Gary gera-o para todos os dispositivos da placa e também para o espaço de expansão, mesmo que não haja lá nada: assim um acesso a um endereço vazio devolve lixo em vez de pendurar a máquina.
Duas entradas deixam o exterior mudar isto. O XRDY, puxado por uma placa de expansão, atrasa o DTACK e mete estados de espera para dispositivos lentos. O OVR desliga de vez a descodificação interna e o DTACK, para uma placa se pôr no lugar de um dispositivo da placa-mãe, como uma ROM externa, e responder ela própria. A especificação avisa que o truque não serve para substituir a Chip RAM nem os registos dos chips: os tempos não são fiáveis.
O Gary também se mete no meio quando os chips personalizados estão a fazer DMA. Se o processador tenta ir ao bus de vídeo enquanto o Agnus o está a usar, o Gary segura o DTACK e o 68000 espera a sua vez. E quando o processador anda na zona de $C00000, aciona o sinal que abranda o Blitter.
Amiga 500 · 1987E ainda a disquete, o reset e os buffers
Para lá dos endereços, o Gary tem uma série de pequenas funções que não cabiam em mais lado nenhum. Controla os buffers entre o bus do processador e o bus de vídeo, os sinais CDR, CDW e C4 que abrem os latches no momento certo dos relógios C1 e C3. Recebe o reset do teclado e é ele que puxa as linhas de reset e de halt do 68000.
E trata de um pedaço da unidade de disquetes: guarda o estado do motor quando a unidade é selecionada, e repete em buffer os sinais de escrita e de motor que vão para o conector. É por isso que uma unidade que não liga o motor pode ter a culpa no Gary, e não só no CIA-B.
O chip funciona a partir dos relógios do Agnus: o C1 e o C3 a 3,58 MHz, desfasados de 90 graus, e o CDAC a 7,14 MHz. Não tem relógio próprio nem registos: é lógica pura, e por isso não se programa, só se liga.
Sabias que…
Sem o Gary, um 68000 que acedesse a um endereço vazio ficava pendurado para sempre à espera do DTACK. É ele que garante que todos os endereços, até os sem nada, respondem.
Os primeiros A2000 traziam um Gary da Toshiba com defeitos. A Commodore mandou trocá-lo pelo da MOS, e a própria especificação admite um caso em que nenhum dos dois cumpre os tempos.
O pino EXP é a forma de o Gary saber que há memória no alçapão: a placa A501 liga-o à massa, e só então o Gary responde no endereço $C00000.
Por dentro só consome 25 mA no máximo. Para um chip de 48 pinos que está em todos os ciclos do bus, é quase nada.
Fat Gary não é um Gary maior: é um PLCC para os A3000 e A4000, com um bus de 32 bits para descodificar, e dois números de peça (4393 e 4791) para o mesmo trabalho.
Avarias em que entra
Guias de diagnóstico do explorador de placas que medem sinais deste chip, placa a placa.
Ecrã preto, não arranca
A luz acende mas o ecrã fica preto, sem cor nenhuma. Mede pela ordem: cada passo só vale a pena se o anterior estiver bem.
Amiga 500 rev 8A →Amiga 4000 rev 2 →Amiga 4000 rev B →Amiga 4000T rev 4 →
A disquete não lê
A drive interna não roda, não mexe a cabeça ou roda mas não lê. A CIA-B dá as ordens à drive e a Paula recebe os dados.
Amiga 500 rev 8A →Amiga 4000 rev 2 →Amiga 4000 rev B →Amiga 4000T rev 4 →
Onde está
Fontes
- [1]A500/A2000 Gary Specification · Commodore · arquivo de Dave Haynie (espelho devili.iki.fi)
- [2]Gary 5718/5719 e Fat Gary (números de peça, máquinas, nota sobre a Toshiba) · Big Book of Amiga Hardware
- [3]A500 Service Manual (PN-314981-04) · Commodore, 1990
- [4]Amiga custom chips · Wikipédia




