User`s manual
48 rabbit.com The Rabbit BIOS
<name>
The non-terminal “name,” though not explicitly defined in the grammar, is equivalent to a C-style identi-
fier (not in the C namespace) and denotes the name of the origin declared.
in
The terminal “in” denotes a new concept for declaring origins – the idea of a hierarchical organization, or
parentage. Given y is a previously declared origin, stating x in y denotes that x is a child of y or that y is
the parent of x. The name following “in” qualifier represents the identifier of a previously declared origin.
We will use the terms 'parent', 'child' and 'sibling' when referring to relationships between origins. The
principle uses of this concept are the creation of boundary dependence and the enforcement of natural
boundary constraints. Much of the remaining syntax becomes very natural when following the implica-
tions of this concept.
Another key concept in the child-parent model of origin declarations is the notion that child origins
remove space from their parents. The reason for this is that we are still modeling a linear memory space.
The hierarchy is simply a way to organize the information in a dependent manner, which obviates the
macro verbosity that was previously required by origin declarations. As shown in the examples above,
each origin represents an entire space of a particular origin type. Child origins transfer space from their
parents to themselves. The remaining space in the parent origin is fragmented automatically by the com-
piler. At the end of the origin declaration section, all that remains is a flattened map that represents the true
layout of memory in the physical space.
Table 6-2 Origin Type Descriptions
Origin Type Keyword Description
flashorg
Used for mapping flash; non-volatile.
bbramorg
Used for mapping RAM; battery-backed.
fastramorg
Used for mapping fast RAM.
xconorg
Used for mapping xmem constants.
xcodorg
Used for mapping xmem code
xvarorg
Used for mapping xmem data.
xmemorg
Reserved for future use.
rconorg
Used for mapping root constants.
rcodorg
Used for mapping root code.
rvarorg
Used for mapping root data.
wcodorg Used for mapping watch code.
resvorg Reserved origin, meaning that it will not be touched
by the compiler.