CAS is the acronym for Ccompare And Swap with Operand, a instruction that is used to create multiprocessor-safe shared data structure. The MC680x0 instruction set reference describe its operation as:
CAS compares the effective address operand to the compare operand (Dc). If the operands are equal, the instruction writes the update operand (Du) to the effective address operand; otherwise, the instruction writes the effective address operand to the compare operand (Dc).
The atomicity is realized via a special bus cycle that external peripherals must not break.
The official Amiga programming guidelines state that CAS must not be used on an Amiga as it can lock the machine. As far as I remember, the reason is that Agnus can't deal with this special cycle.
- Was this later fixed in one of the latter Agnus revisions (Fat Agnus, Super Agnus) and/or AA's Alice?
- Is is really only Agnus (or Denise/Lisa and Paula too) the culprit or are the "glue logic" chips (Gary, Fat Gary, Gayle, Buster, Super Buster, Bridgette, Ramsey...) responsible for it too?
- Does it a affect all of the 24 bit original address space, or just Chip RAM access (eg. does it work in "Slow Fast" RAM? Does it work in the Zorro II address space?).
- Is the address space above the 16MB marker free of the problem?