# Agnus (Amiga)

Der Agnus (lat. für Lamm) ist einer der Custom-Chips im Chipsatz des Commodore Amiga. In den späteren Versionen wurde er in Alice umbenannt.

## Name

„Agnus“ ist ein Akronym von „Adressgenerator“ (englisch AdressGeneratorUnits).

## Eigenschaften

Der Baustein ist für die Steuerung des sogenannten Chip-RAMs im Amiga zuständig, stellt die Video-Synchronsignale (HSY, CSY, VSY) zur Verfügung und enthält die Coprozessoren Copper und Blitter. Agnus enthält zusätzlich die komplette DMA-Logik für alle 6 möglichen Quellen. Für den zeitlichen Ablauf der einzelnen DMA-Zugriffe dient eine Bildschirmzeile als Zeitbezug. In jeder Zeile werden 225 Speicherzugriffe von Agnus auf die DMA-Kanäle und die CPU verteilt. Für das korrekte Timing sind ein Zeilen- und ein Spaltenzähler verantwortlich (HSY, VSY). Über diese Signale kann das Timing auch extern gesteuert werden (Genlock). Ein wesentlicher Hauptbestandteil von Agnus ist der große Adressgenerator. Alle Custom-Chips des Amiga können unabhängig von der CPU direkt auf das RAM zugreifen. Dazu benötigen diese Chips jedoch einen freien DMA-Kanal und den Adressgenerator. Über die DMA-Kanäle wird der Zugriff auf das RAM abgewickelt. Der Adressgenerator wandelt die Signale eines Chips in vollständige Speicheradressen um. Agnus kann Daten unabhängig vom Hauptprozessor im Speicher kopieren oder von einem Peripheriegerät in einen Speicherbereich oder umgekehrt.
Keiner der anderen Chips des Amiga-Chipsatzes verfügt über DMA-Kanäle oder Adressgeneratoren. Alle Speicherzugriffe laufen deshalb zentral über Agnus und werden von ihm kontrolliert und koordiniert. Insgesamt hat Agnus 25 DMA-Kanäle, über die 25 verschiedene Geräte ohne Beihilfe der CPU Daten in den Speicher schreiben oder aus ihm lesen können. Zu diesen von Agnus aus dem Chip-RAM geholten und von Denise dargestellten Video-Daten gehören neben den Pixel-Daten Paletten- und Sprite-Daten sowie die Copperlisten. Die Daten von BOBs werden zwar auch von Agnus per DMA geholt, aber dann mit dem in Agnus integrierten Blitter direkt an die darzustellende Position innerhalb des Videospeichers im Chip-RAM kopiert.
Agnus holt zum einen die Video- und Sound-Daten aus dem Chip-RAM und kann zum anderen auch Daten innerhalb des Chip-RAMs umkopieren und dabei auch verarbeiten (blitten), kann aber auch Daten generieren, nämlich beim Linienzeichnen und Flächenfüllen mit dem Blitter.
Die Urversion des Agnus kann 512 KiB Chip-RAM adressieren (OCS). Sie wurde im DIP-Gehäuse gefertigt und nur im Amiga 1000 und im Amiga 2000 mit A-Board eingesetzt. Die Nachfolgemodelle Amiga 500 und Amiga 2000 mit B-Board verfügen bereits über einen PLCC-Sockel für den aufgrund dieser Gehäuseform so genannten Fat Agnus (siehe unten bei PLCC-Versionen). Der Fat Agnus erschien in verschiedenen Varianten für unterschiedliche Chip-RAM-Größen mit abweichendem Funktionsumfang (OCS/ECS). Für die ECS-Versionen des Fat Agnus kursieren zusätzlich nicht vom Hersteller geprägte und daher uneinheitlich verwendete Ausdrücke wie Big Agnus, Super Agnus oder die Kombination dieser.
Der Alice-Chip ist die Weiterentwicklung des Fat Agnus für den AGA(AA)-Chipsatz. Alice wurde auf Basis des A3000-Agnus neu entwickelt und speziell auf die neueren CPUs (ab MC68020) zugeschnitten. Weil bei diesen Prozessoren der Bus 32 Bit breit ist, konnten einige Signale zusammengefasst bzw. entfernt werden. Damit konnten 2 MiB Chip-RAM verwendet werden. Alice kann allerdings nicht in alte Amigas eingebaut werden. Er ist nur für die Amigas mit AGA(AA)-Chipsatz entwickelt worden und wird im Amiga 1200, Amiga 4000-Modellen und im CD³² verwendet.

## Versionen

* 8361 (A1000, A2000A, OCS, DIP-Gehäuse, NTSC)
* 8367 (A1000, A2000A, OCS, DIP-Gehäuse, PAL)
* 8370 (A500, A2000, OCS, PLCC-Gehäuse, NTSC)
* 8371 (A500, A2000, OCS, PLCC-Gehäuse, PAL)
* 8372 (A500, A2000, ECS, 1 MiB Chip-RAM)
* 8372-A (A500, A2000, ECS, 1 MiB Chip-RAM)
* 8372-B (A500+, A600, ECS, 2 MiB Chip-RAM)
* 8372-AB (A3000(T), ECS, 2 MiB Chip-RAM)
* 8374 Alice (A1200, A4000(T), CD³², AGA)
* 8375 (A500+, A600, ECS, 2 MiB Chip-RAM)
Der Fat-(PLCC)-Agnus 8370-72/75 existiert also in verschiedenen Varianten:
* 1 MiB RAM, aber aufgrund nicht erweiterter Register nur 512 KiB als Chip-RAM nutzbar (OCS), die 2. Hälfte wird als Pseudo Fast-RAM nach $C00000 gemappt ('Ranger-Memory')
* 1 MiB RAM, voll als Chip-RAM nutzbar (ECS)
* 2 MiB RAM, voll als Chip-RAM nutzbar (ECS in A3000(T), A500+, A600)
ECS-Chips sind zwischen PAL und NTSC umschaltbar, im OCS existieren dedizierte Versionen.

## DMA-Kanäle

| Priorität | Name | Anzahl | Zyklen/Rasterzeile | Chip | Bemerkung |
| | MPU | 1 | variiert | CPU | |
| A | Blitter | 4 | variiert | Agnus (intern) | gibt Zyklen an CPU ab, außer wenn BLTPRI aktiviert |
| B | Bitplane | 6 | 80 | Denise | bei extremem Overscan werden Sprite-Kanäle beeinträchtigt |
| C | Copper | 1 | variiert | Agnus (intern) | |
| D | Audio | 4 | 4 | Paula | |
| E | Sprites | 8 | 16 | Denise | |
| F | Disk | 1 | 3 | Paula | |
| G | Memory Refresh | 1 | 4 | - | |
| Quelle: Amiga 500 plus Service Manual |||||

## Pinbelegung
### DIP-Version

| | OCS |
| | A1000/2000 |
| | 8361/67 |
| 1 | D8 |
| 2 | D7 |
| 3 | D6 |
| 4 | D5 |
| 5 | D4 |
| 6 | D3 |
| 7 | D2 |
| 8 | D1 |
| 9 | D0 |
| 10 | Vcc (+5V) |
| 11 | _RES |
| 12 | _INT3 |
| 13 | DMAL |
| 14 | _BLS |
| 15 | _DBR |
| 16 | _ARW |
| 17 | _RGA8 |
| 18 | _RGA7 |
| 19 | _RGA6 |
| 20 | _RGA5 |
| 21 | _RGA4 |
| 22 | _RGA3 |
| 23 | _RGA2 |
| 24 | _RGA1 |
| 25 | CCK |
| 26 | CCKQ |
| 27 | VSS |
| 28 | DRA0 |
| 29 | DRA1 |
| 30 | DRA2 |
| 31 | DRA3 |
| 32 | DRA4 |
| 33 | DRA5 |
| 34 | DRA6 |
| 35 | DRA7 |
| 36 | DRA8 |
| 37 | _FIR0 |
| 38 | _VSY |
| 39 | _CSY |
| 40 | _HSY |
| 41 | VSS |
| 42 | D15 |
| 43 | D14 |
| 44 | D13 |
| 45 | D12 |
| 46 | D11 |
| 47 | D10 |
| 48 | D9 |
| Quelle: A2000A Schaltplan ||

### PLCC-Versionen

Bei Austausch/Umbau ist die Pinbelegung interessant. Die Typenangaben sind lediglich zur Referenz gedacht; von einem vorliegenden Agnus-Chip kann nicht direkt auf die Pinbelegung geschlossen werden, da diese unabhängig vom Chip anscheinend erst beim Packaging festgelegt wurde.
| | OCS/ECS | ECS | ECS | AGA |
| | A500/2000 | A3000 | A500+/600 | A1200/4000 |
| | 8370/71 | 8372 | 8375 | 8374 Alice |
| 1 | RD13 | DRD13 | DRD13 | DRD13 |
| 2 | RD12 | DRD12 | DRD12 | DRD12 |
| 3 | RD11 | DRD11 | DRD11 | DRD11 |
| 4 | RD10 | DRD10 | DRD10 | DRD10 |
| 5 | RD9 | DRD9 | DRD9 | DRD9 |
| 6 | RD8 | DRD8 | DRD8 | DRD8 |
| 7 | RD7 | DRD7 | DRD7 | DRD7 |
| 8 | RD6 | DRD6 | DRD6 | DRD6 |
| 9 | RD5 | DRD5 | DRD5 | DRD5 |
| 10 | RD4 | DRD4 | DRD4 | DRD4 |
| 11 | RD3 | DRD3 | DRD3 | DRD3 |
| 12 | RD2 | DRD2 | DRD2 | DRD2 |
| 13 | RD1 | DRD1 | DRD1 | DRD1 |
| 14 | RD0 | DRD0 | DRD0 | DRD0 |
| 15 | Vcc | Vcc | Vcc | Vcc1 |
| 16 | RST* | _RESET | _RESET | /RESET |
| 17 | INT3 | _INTR | _INTR | /INTR |
| 18 | DMAL | DMAL | DMAL | DMAL |
| 19 | BLS* | _BLISS | _BLISS | /BLS |
| 20 | DBR* | _BLIT | _BLIT | /DBR |
| 21 | RRW | _WE | _WE | /WE |
| 22 | PRW | R/W | R/W | R/W |
| 23 | RGEN* | _REGEN | _REGEN | _REGEN |
| 24 | AS* | _AS | _AS | NC2 |
| 25 | RAMEN* | _RAMEN | _RAMEN | /RAMEN |
| 26 | RGA8 | RGA8 | RGA8 | RGA8 |
| 27 | RGA7 | RGA7 | RGA7 | RGA7 |
| 28 | RGA6 | RGA6 | RGA6 | RGA6 |
| 29 | RGA5 | RGA5 | RGA5 | RGA5 |
| 30 | RGA4 | RGA4 | RGA4 | RGA4 |
| 31 | RGA3 | RGA3 | RGA3 | RGA3 |
| 32 | RGA2 | RGA2 | RGA2 | RGA2 |
| 33 | RGA1 | RGA1 | RGA1 | RGA1 |
| 34 | 28MHz | 28MHz | 28MHz | SCLK |
| 35 | XCLK | A20 | A20 | A20 |
| 36 | XCLKEN* | _XCLKEN | _CDAC | 14MHz |
| 37 | CDAC* | _CDAC | 7MHz | /CDAC |
| 38 | 7MHz | 7MHz | CCKQ | 7MHz |
| 39 | CCKQ | CCKQ | CCK | CCKQ |
| 40 | CCK | CCK | 14M | CCK |
| 41 | TEST | TEST | GND | /NTSC |
| 42 | Vss | Vss1 | DRA0 | GND2 |
| 43 | MA0 | DRA0 | DRA1 | DRA0 |
| 44 | MA1 | DRA1 | DRA2 | DRA1 |
| 45 | MA2 | DRA2 | DRA3 | DRA2 |
| 46 | MA3 | DRA3 | DRA4 | DRA3 |
| 47 | MA4 | DRA4 | DRA5 | DRA4 |
| 48 | MA5 | DRA5 | DRA6 | DRA5 |
| 49 | MA6 | DRA6 | DRA7 | DRA6 |
| 50 | MA7 | DRA7 | DRA8 | DRA7 |
| 51 | MA8 | DRA8 | _LDS | DRA8 |
| 52 | LDS* | _LDS | _UDS | Vcc2 |
| 53 | UDS* | _UDS | _CASL | NC1 |
| 54 | CASL* | _CASL | _CASU | /CAS |
| 55 | CASU* | _CASU | DRA9 | Vbb |
| 56 | RAS1* | DRA9 | _RAS1 | DRA9 |
| 57 | RAS0* | _RAS | _RAS0 | /RAS |
| 58 | Vss | Vss2 | GND | GND3 |
| 59 | A19 | A19 | A19 | A19 |
| 60 | A1 | A1 | A1 | A1 |
| 61 | A2 | A2 | A2 | A2 |
| 62 | A3 | A3 | A3 | A3 |
| 63 | A4 | A4 | A4 | A4 |
| 64 | A5 | A5 | A5 | A5 |
| 65 | A6 | A6 | A6 | A6 |
| 66 | A7 | A7 | A7 | A7 |
| 67 | A8 | A8 | A8 | A8 |
| 68 | A9 | A9 | A9 | A9 |
| 69 | A10 | A10 | A10 | A10 |
| 70 | A11 | A11 | A11 | A11 |
| 71 | A12 | A12 | A12 | A12 |
| 72 | A13 | A13 | A13 | A13 |
| 73 | A14 | A14 | A14 | A14 |
| 74 | A15 | A15 | A15 | A15 |
| 75 | A16 | A16 | A16 | A16 |
| 76 | A17 | A17 | A17 | A17 |
| 77 | A18 | A18 | A18 | A18 |
| 78 | LP* | _LPEN | _LPEN | /LPEN |
| 79 | VSY* | _VSYNC | _VSYNC | /VSYNC |
| 80 | CSY* | _CSYNC | _CSYNC | /CSYNC |
| 81 | HSY* | _HSYNC | _HSYNC | /HSYNC |
| 82 | Vss | Vss3 | GND | GND1 |
| 83 | RD15 | DRD15 | DRD15 | DRD15 |
| 84 | RD14 | DRD14 | DRD14 | DRD14 |
| Quellen: A500 Service Training, A3000 Service Manual, A500+ Service Manual, A1200 Schaltplan |||||