Although the circuit diagrams for all the different CAM s seem to be proprietary information, published descriptions allow working up at least a block diagram of their operation; contemplating software which interacts directly with the CAM without such information would appear to be rather difficult.
One of the important characteristics of a CAM is its role as a video controller, as a consequence of which it can be implemented as a specialized shift register. Rather than building a fully parallel circuit in which every cell evolves simultaneously, it is only necessary that each cell be updated as its place on the monitor screen comes around. The process evidently favors two-dimensional cellular automata.
Three essential components of a CAM have to be considered: output to the video monitor, data defining the states of the cells, and the rule of evolution of the automaton. Choice of these parameters is restricted and influenced by permanent elements of the circuit design, such as how many states are allocated to each cell, and the neighborhood which will surround it. To a certain extent, these details are also programmable.
The fundamental structural element of a CAM is a bitplane; in the CAM/PC it is a 256x256 binary array. Grouping two bitplanes into a half-CAM gives a full CAM a complement of four bitplanes. The peculiar nomenclature results from an assymetry in the two planes of a half-CAM --- sometimes only one of them evolves. Following mathematical and computing convention, the four planes are numbered 0, 1, 2, 3.
The way that a linear shift register of 64K stages can be treated as a plane is to take out taps at 256 bit intervals; it is sufficient to read from the feedback point of the cycle, 1 and 256 bits ahead, also 1 and 256 bits behind to obtain a five cell, two dimensional, binary von Neumann neighborhood.