Agnus

The name Agnus is derived from ‘Address GeNerator UnitS’ since it houses all address/pointer registers and controls memory access of the custom chips. So, Agnus is the central part of the Amiga OCS and ECS chipsets.

The way AGNUS does that resembles a set of traffic lights – similarly, AGNUS arbitrates the flow of data along 25 separate lanes (25 DMA or Direct Memory Access channels) within the chipset. It also provides video timings.
In its “fat” incarnations, it does more (see below).

AGNUS also contains the blitter and copper “coprocessors”:

The “Blitter” is dedicated to copying the contents of one section of Chip memory to another place in Chip memory, much faster (approx. twice as fast) than could be done with the 68000 CPU. Aside from simple copying, it can provide further manipulations: logical combining of up to 3 sources, pixel-precision shifting, line drawing and simple area filling.

The “Copper” remains synchronized with the video beam position counters (it has direct access to them without requiring any chip-RAM data transfers). It can WAIT until a specific position is reached and then MOVE some value into a chipset hardware register. A 3rd SKIP copper instruction can aid in the construction of simple IF-THEN clauses. Despite its apparent simplicity, the Copper is suited to many tasks: from simple register refreshing/reloading to perfectly controlled mid-screen colour and resolution changes to even starting the blitter in a beam-synchronised fashion.

AGNUS had many revisions made to it from 1984 until it was replaced by the Alice chip in the AGA chipset in 1992. The Agnus hierarchy generally has two main branches, the “thin” Agnus and the “fat” Agnus.

The “thin” Agnus is the original 48-pin DIP package Agnus as used in the Amiga 1000 and early “german” Amiga 2000-A (which is Amiga 1000 based). There are only two variants of the “thin” Agnus:
– 8361 (NTSC timings)
– 8367 (PAL timings)
The thin Agnus has 18-bit DMA pointer registers (to the system these appear as 19-bit, with the LSB ignored and always considered 0) and can therefore address 2^18 = 262144 words (2^19 bytes), or 512 Kbytes of RAM (the so-called chip RAM). It also has a small blitter “bug” (*), corrected in the “fat” versions.

The “fat” Agnus is the more well-known 84-pin PLCC package version, debuting in the Amiga 500 and also used on the Amiga 2000-B and Amiga 3000 systems, as well as the CDTV.  Later revisions of the “Fat” Agnus used in all the other Amiga models, other than the AGA Chipset machines.  The term “fat” is because now it integrates a simple clock generator that produces all the necessary system clocks from the master 28 MHz oscillator, and also a DRAM controller for chip/slow RAM.

Variants of the “fat” Agnus include:

– The original 8370 (NTSC) / 8371 (PAL) “fat” Agnus. Can control 1 MB of RAM, but DMA pointers are still 18-bit so only 512 KB chip RAM is supported (if present, the other 512 KB is typically mapped as $C00000 slow RAM).
Typically found on: Amiga 500 rev3 and rev5, Amiga 2000-B rev 4.x (US models), but can be found on very early rev6 Amiga 500 and Amiga 2000-B‘s as well (those boards also have a “refresh fix” additional small PCB).

– The enhanced (ECS) 8372A Agnus (model 318069-029, supports both NTSC and PAL, selectable via pin 41 at powerup and via software at anytime). Also supports additional video timings (requires the ECS Denise as well to provide these new modes). Controls still up to 1 MB of RAM but now can address all of it as chip RAM (19-bit pointers).
Unofficially called the “fatter” Agnus to signify the increased 1 MB chip RAM support.
Typically found on: Amiga 500 rev6A, Amiga 2000-B rev6.x, and the CDTV.

– The enhanced (ECS) 8372B Agnus (model 318069-03). Essentially an 8372A with 2 MB RAM support, all addressable as chip RAM (20-bit pointers). Some batches of the 8372B even use the 8372A packaging, with the B distinctly added after the 8372A part. These read like 8372AB, but internally they are 8372B parts.
Unofficially called the “obese” Agnus to signify the yet increased 2 MB chip RAM support.
Typically found on: Amiga 3000 (and also on some “megachip” 2 MB chip RAM upgrades). (**)

– The 8375 series, which are all ECS models. Some are 1 MB, some 2 MB, some are pin-compatible to the previous models, some are not. All can be software set to either PAL or NTSC but upon power up will default to their indicated variant. Most well known members of the series are:

++ 390544-01 (PAL) or -02 (NTSC), 2 MB support, not pin compatible to 8370/71/72A/72B models.
Typically found on: Rev8A(.1) Amiga 500 plus motherboards, early Amiga 600s (marked as A300), many “megachip” expansions.

++ 318069-10 (PAL) or -11 (NTSC), Vbb version of the 390544 model. 2 MB support, not pin compatible to 8370/71/72A/72B models.
Typically found on: Later Rev8A(.1) Amiga 500 plus motherboards (possible Vbb fix needed), later Amiga 600s, many “megachip” expansions.

++ 318069-16 (PAL) or -17 (NTSC). Vbb replacement to the 8372A. 1 MB support, pin compatible to the 8370/71/72A family.
Typically found on very late Amiga 2000-B systems (some require a small fix for stable operation with these chips – same when using them as a replacement to an existing 8370/71/72A).

++ 318069-18 (PAL) or 318069-19 (NTSC). Likewise, Vbb replacement to the 8372B. 2 MB support, obviously pin compatible to the 8372B model.
Typically found on very late Amiga 3000 systems. Possible Vbb “fix” needed when replacing an 8372B with its 8375 counterpart.

The AGA chipset incarnation of Agnus is the Alice chip. Both carry similar hardware and duties.

(*) Thin Agnus blitter bug: Upon instructed to begin a blit operation, the blitter will erroneously not report itself busy until it has actually fetched its first word of data. This can cause undesired behaviour. The easy solution is for the CPU to check twice if the blitter is busy – even if the 1st report is erroneous, the 2nd will always be correct.

(**) Due to limited pinout, the 8372B Agnus dumped the 2nd RAS line and replaced it by an extra mux address pin, requiring extra circuitry on the Amiga 3000 to bring back the 2nd RAS line. Interestingly enough, the Amiga 500 rev6A/7 motherboard provides all the necessary layout and jumper support for single-bank 2 MB of chip RAM using 4 1Mx4 chips and the 8372B Agnus. This feature, despite being documented, was never implemented.