User`s manual

Rabbit 4000 Designer’s Handbook rabbit.com 49
<placement>
The non-terminal “placement” denotes the placement of an origin within a larger parent space relative to
the beginning of that parent (in the absence of the “in” qualifier, the parent can be considered to be all of
the physical memory or “root”). The “placement” non-terminal is either the “fill” terminal or the non-ter-
minal <vector> followed by the non-terminal “size.” The “vector” non-terminal is not a vector in the math-
ematical sense, but rather denotes a position and an orientation. An origin may be declared relative to the
beginning or end of its parent or a sibling, and this placement determines its orientation. The orientation
determines how other siblings may reference the origin; for example, if a child is placed at the end of a
parent origin, no sibling origins may be declared “above” it.
<vector>
The non-terminal “vector” consists of the terminal “above” or the terminal “below” followed by an the
non-terminal “offset.” The declaration determines the meaning of offset: “above” indicates that the offset
will be the lower boundary of the declared origin while “below” indicates that the offset will be the upper
boundary.
<offset>
The non-terminal “offset” is either the non-terminal “position” or the non-terminal “name.” A name must
be the identifier of a previously declared sibling origin. When placing an origin “above” a sibling, the
upper boundary of the reference origin is used as the lower boundary of the origin being declared. Simi-
larly, when placing an origin “below” a sibling, the lower boundary of the reference origin is used as the
upper boundary of the origin being declared.
<position>
A position can be either of the special terminals “start” or “end”, or it can be a physical offset followed by
an optional logical address. Though inessential to the grammar, the terminal symbols “phy” and “log” pre-
vent accidental macro expansion problems and add clarity for inexperienced users. The physical offset is
measured from the beginning of the parent origin. The logical address is required for origins of logical
type that are declared relative to a physical origin, and are optional otherwise. It must be omitted if the
declared origin is of physical type. The exceptional origin types “wcodorg” and “resvorg” may be declared
with logical offsets, making them logical origins. In the absence of logical offsets, they will still be logical
origins if declared as children of a logical origin. The terminals “start” and “end” indicate the lower and
upper boundaries of the parent origin, respectively. In the absence of a parent origin, the extents are the
physical addressable range defined by the MECR.
<size>
The non-terminal size is either the terminal symbol “size” followed by an integer or the symbol “to” fol-
lowed by an integer. The integer following “size” specifies the number of bytes the origin contains. The
“to” terminal indicates where the origin ends, in which case its size is the absolute value of the difference
between the end and beginning of the origin. Note that since origins can be defined in terms of their lower
or upper boundaries, “to” always specifies the complimentary boundary.