RETRODREAMSAMIGA & SPECTRUM
Menu

← Todos os chips

agnus.chip

PLCC-84 · 8372A · desenho, não fotografia

Chips do AmigaCommodore (MOS / CSG)

1985

Agnus / Alice

O chip que manda na memória do Amiga, e que traz lá dentro o Copper e o Blitter.

O Agnus decide quem usa a memória Chip e quando, e esconde dois coprocessadores: o Copper, que muda o vídeo ao ritmo do feixe do ecrã, e o Blitter, que copia e desenha blocos de imagem sem ocupar o processador. Evoluiu do Agnus original de 512 KB até ao Alice do AGA, com 2 MB.

bits de bus
16

Uma consola feita de placas de ensaio

Tudo começa em 1982, na Hi-Toro, a pequena empresa da Califórnia que pouco depois passou a chamar-se Amiga Corporation. Jay Miner, que já tinha desenhado os chips gráficos da Atari 2600 e dos Atari de 8 bits, liderava o hardware de uma consola com o nome de código Lorraine, o nome da mulher de Dave Morse, o presidente da empresa.

Antes de haver silício, os chips existiam como montes de placas de ensaio (breadboards) cheias de componentes comuns e ligadas por um emaranhado de fios. Conta-se que o conjunto enchia uma mesa de cozinha. Foi nesse estado que a Lorraine foi mostrada na feira CES de janeiro de 1984.

Nos primeiros tempos, os três chips chamavam-se Agnus, Daphne e Portia. O Agnus foi o único que manteve o nome; os outros dois viriam a ser o Denise e o Paula.

O porteiro da memória Chip

No Amiga, a imagem, o som e os dados da disquete vivem numa memória partilhada, a Chip RAM. O processador e os outros chips não lhe podem mexer à vontade: têm de pedir ao Agnus. Ele gere 25 canais de DMA (acesso direto à memória), o que quer dizer que o vídeo, o som e a disquete vão buscar os dados sozinhos, sem o processador ter de os carregar um a um.

O truque está na divisão do tempo. O 68000 só usa a memória em ciclos alternados, por isso o Agnus dá os ciclos ímpares ao vídeo, ao som e à disquete e deixa os pares ao processador. Em uso normal, nenhum dos dois repara no outro. Só quando o ecrã usa muitas cores em alta resolução, ou quando o Blitter trabalha a fundo, é que o processador fica à espera.

Tudo isto corre ao compasso do ecrã. A unidade de tempo do Agnus é o ciclo de cor, de cerca de 280 nanossegundos, o tempo de dois píxeis em baixa resolução. O Agnus mantém os contadores da posição do feixe e pode sincronizar-se com um sinal de vídeo externo (genlock), uma das razões por que o Amiga entrou tão depressa nos estúdios de televisão.

O Copper: um coprocessador que só pensa no ecrã

O Copper (de coprocessor) é uma pequena máquina que corre um programa próprio, a lista do Copper, em paralelo com o processador. Conhece só três instruções: MOVE escreve um valor num registo dos chips, WAIT espera até o feixe chegar a uma posição do ecrã, e SKIP salta a instrução seguinte se o feixe já lá tiver passado. Cada instrução ocupa 4 bytes.

Parece pouco, mas é o que dá ao Amiga o seu aspeto. Como o Copper pode mudar as cores, a resolução ou o endereço da imagem a meio do ecrã, uma linha pode ter cores diferentes da seguinte: são as barras de cor (raster bars) de tantas demos e jogos. É também o Copper que permite ao Workbench mostrar dois ecrãs com resoluções diferentes, um por cima do outro, ao mesmo tempo.

A lista recomeça do início em cada imagem, 50 vezes por segundo em PAL. Não há instrução de fim: termina-se com um WAIT por uma posição que o feixe nunca atinge. Enquanto espera, o Copper sai do barramento e não gasta ciclos de memória.

O Blitter: copiar, combinar, desenhar

Blitter vem de "block image transfer". Lê até três blocos de memória (chamados A, B e C), combina-os bit a bit com uma função lógica à escolha e escreve o resultado num quarto bloco, D. Há 256 funções lógicas possíveis, e pelo caminho cada linha pode ser deslocada de 0 a 15 píxeis. É assim que se desenha um boneco com recorte por cima do cenário: a máscara diz onde o boneco tapa o fundo e onde o deixa ver.

Os programadores chamavam bobs (blitter objects) a estes bonecos desenhados pelo Blitter, para os distinguir dos sprites do Denise. O Blitter também traça linhas (pelo algoritmo de Bresenham) e preenche áreas entre linhas, o que junto dá polígonos cheios: a base dos vetores 3D das demos. Até a leitura das disquetes o usa, para descodificar os dados MFM de cada pista.

No chipset original, cada operação cobre no máximo 1024 × 1024 píxeis. Com o Blitter a copiar janelas e gráficos, o processador fica livre para outras tarefas, e é por isso que um 68000 a 7 MHz conseguia mexer janelas e jogos com uma fluidez que poucos computadores da época tinham.

De Agnus a Alice: as revisões

O primeiro Agnus, do A1000 e do primeiro A2000, vinha num encapsulamento DIP de 48 pinos: o 8361 para NTSC e o 8367 para PAL. Endereça 512 KB de Chip RAM. Em 1987, com o A500 e o B2000, chegou o Fat Agnus (8370 NTSC, 8371 PAL), num PLCC quadrado de 84 pinos. Continua limitado a 512 KB de Chip RAM, mas gere mais 512 KB de Slow RAM, a memória da trapdoor do A500.

O ECS trouxe o 8372A, que endereça 1 MB de Chip RAM e funciona em PAL ou NTSC. Apareceu nas últimas revisões do A500 e do B2000 (a partir da revisão 6) e no CDTV. Os 8372AB e 8372B do A3000 e várias versões do 8375 (A500 Plus e A600) chegam aos 2 MB. O Agnus ECS também faz blits até 32 768 × 32 768 píxeis e tem contadores de feixe programáveis, que permitem modos de vídeo como o Productivity, de 640 × 480 sem entrelaçamento.

No AGA, o sucessor chama-se Alice (8374), e está no A1200, no A4000 e no CD32. Endereça 2 MB de Chip RAM e vai buscar os dados de imagem e dos sprites em palavras de 32 bits e em modo de página rápida, o que multiplica por quatro a largura de banda. Curiosamente, o Blitter e o Copper do Alice continuam a trabalhar a 16 bits, tal como em 1985.

Porque é que o Agnus importou

Sem o Copper e o Blitter não haveria a demoscene do Amiga: as barras de cor, os ecrãs divididos, os scrolls suaves e os vetores cheios vêm todos daqui. Nos jogos, os bobs do Blitter e as paletas trocadas pelo Copper a meio do ecrã davam mais cor e mais objetos do que o hardware parecia permitir.

No vídeo, o genlock e a temporização próxima da televisão fizeram do Amiga um gerador de legendas e efeitos barato. O Video Toaster da NewTek, que ganhou um Emmy técnico em 1993, fazia boa parte dos seus efeitos com a ajuda do chipset do Amiga, sincronizado com o sinal NTSC.

Sabias que…

  1. Diz-se que Agnus vem de "Address GeNerator UnitS", as unidades que geram os endereços de memória.

  2. Diz-se que os chips tinham nomes de mulher para que os engenheiros pudessem falar deles em público sem levantar suspeitas: quem ouvisse falar da Agnus ou da Portia julgaria que eram pessoas.

  3. O nome Fat Agnus (Agnus gordo) vem do encapsulamento: o PLCC de 84 pinos é bem mais largo do que o DIP original. O de 1 MB há quem lhe chame Fatter Agnus.

  4. Uma lista do Copper termina, por tradição, com a instrução $FFFF,$FFFE: um WAIT por uma posição do ecrã que nunca chega.

  5. Há um bit que dá ao Blitter prioridade total sobre o processador, deixando o 68000 parado à espera. Os programadores chamavam-lhe blitter nasty.

  6. A placa do A4000 tem um jumper assinalado para 8 MB de Chip RAM. Não serve para nada: o Alice só endereça 2 MB, seja qual for a posição.

  7. Mitchy, a cadela de Jay Miner, ia com ele para todo o lado. Conta-se que, ainda nos tempos da Atari, tinha crachá de funcionária com o número 000.

  8. Antes do ECS, a Commodore desenhou um chipset mais ambicioso, o Ranger. Foi cancelado em 1989 por ser caro demais, e o ECS ficou no seu lugar.

RUN "DEMO"

O Copper em ação

O Copper é um pequeno coprocessador dentro da Agnus que acompanha o feixe do ecrã e muda registos a meio do desenho. Mudar a cor de fundo em cada linha, sem gastar o processador, dá estas barras de cor: a assinatura das demos do Amiga.

MOVE #$0F00,COLOR00

Onde está