ROM addresses. 
- When a label is used on a "word" statement,
the rom address of the word defined by the
"word" statement is assigned as the value of
the label. The label may be used in an expression exactly
as if it were an the label of an equate statement.
Furthermore, an asterisk ("*") may be used in
an expression to specify the rom address of the current
"word" statement (or the next "word"
statement if it appears in some other type of statement).
The following illustrates the use of labels and rom
addresses. in the following it is assumed that the
microcode sequencer being used forces a jump on every
instruction.
- flda: field position=0
fldb: field position=1
jadr: field position=3,width=12,cmdpos=0
a: word b,flda,fldb
b: word c,fldb
c: word *-2,flda
- Normally ROM addresses are assigned consecutively
starting from zero. The "org" statement can be
used to change the rom address of the next
"word" instruction. An example of an
"org" statement given below.
- org *+10
This statement will leave a ten word "hole" in the
ROM. When an expression appears on an "org" statement,
all equates and rom addresses that are needed to evaluate the
expression must appear before the "org" statement in
the text. This is the only restriction on statement ordering.
When a hole is left in a ROM, the preprocessor adds null
words to fill the hole. A null word is created by assigning every
field its default value.
- The preprocessor normally will expand a ROM to a size
large enough to hold all defined words, including holes.
The number of address bits will be enough to address all
specified words, but no larger. If it is necessary to
limit the rom to a specific number of address bits, the
"size" statement must be used. An example of a
size statement is given below.
- size 256
This statement will limit the rom to 8 address bits (no more,
no less) and 256 words. The operand of the size statement may be
an expression.