RETRODREAMSAMIGA & SPECTRUM
Menu

← Todos os chips

gary.chip

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.

Os 16 MB que o chip descodifica
$000000$800000$FFFFFF
  1. $000000Chip RAM2 MB
  2. $200000Expansão Zorro II8 MB
  3. $A00000CIAs ($BFD000, $BFE001)2 MB
  4. $C00000Memória de expansão ($C00000)512 KB
  5. $C80000Sem uso no chip1 MB
  6. $D80000Relógio de tempo real256 KB
  7. $DC0000Sem uso no chip192 KB
  8. $DF0000Registos dos chips ($DFF000)64 KB
  9. $E00000ROM Kickstart512 KB
  10. $E80000Sem uso no chip1 MB
  11. $F80000ROM Kickstart512 KB

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 500Amiga 500 · 1987
Foto: Bill Bertram · CC BY-SA 2.5 · Wikimedia Commons

E 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…

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

Onde está

Fontes

  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