There is an as yet unresolved problem concerning what happens at the edge of the CA universe, where cells apparently don't
always have the full complement of neighbours.
ArcAut allows two solutions. We can either identify the left hand edge with the right hand edge, as if they were side by side,
& similarly, the top with the bottom. The result is that we no longer have any edges to worry about! The window effectively
corresponds to the surface of a torus or doughnut (the sort with a hole in the middle). The other possibility is to let the
automaton behave as if the border of cells surrounding the window do exist, but are forced to maintain a fixed state. This is
used in the current definition of 'Life'. It is a useful facility if we want to prevent 'objects' such as gliders, wandering off one side of the window, only to reappear on the other, & then go & interfere with whatever is happening in the centre.
Name of system variable Possible values Default value Meaning
wrap on|off on selects whether the CA universe has wrap-around or
is bordered by cells of a fixed state
border {0,1,. . .,255} no default specifies cell state for border; used when wrap=off
neig moore|margolus moore selects the type of neighbourhood required by the
automaton; see table 3
flag 0|3|4|7 0 used when neig=margolus; specifies whether automaton
code register FLAG should return:
0 ;if flag=0
0|1|2|3 depending on CELL's position within block
0 for UL, 1 for UR, 2 for LL, 3 for LR ;if flag=3
0|4 depending on the phase
0 for even phase, 4 for odd phase ;if flag=4
0 to 7 the sum of the above two items ;if flag=7
see table 3
rndb on|off off when neig=margolus & automaton requires use of the
RNDB command, you must set rndb to on;
see tables 2 & 3 and example DLA automaton
To set any of these values include a command, for example '*SetEval wrap off', within the body of the procedure called do, in
the section of text between INITIALISATION* & SCREEN* ; see some of the automatons provided for examples.
You may also use this procedure to allow the user to input parameters needed by your automaton; note, these must also be passed to the rest of the automaton via system variables. See for example the automatons Demon & FracGrow.