ADVNCE - start a new B stack frame.
Usage:
advnce [endptr][,<options>]
<options> := <option> | (<option>[,<options>*])
<option> := ARB | INHIB | STORE
Examples:
bentry putnum
eax3 0
tra start,$
bentry putoct
eax3 1
start advnce ,INHIB
Where:
- endptr
- should be a pointer to the end of the function. If it is
omitted, it will be set to the label "end"
which must be defined using the BEND macro.
- <options>
- must be the second macro argument; hence, if two options
are needed, you should separate them by commas and
enclose them in parentheses.
- ARB
- specifies that this routine accepts a pointer to
an arbitrary number of arguments, instead of the
arguments themselves. (Use the exact word
"ARB".)
- INHIB
- specifies that break handling should be inhibited
during the execution of this routine. (Use the
exact word "INHIB".)
- STORE
- specifies that the routine expects its first two
arguments in storage on the stack rather than in
the A and Q registers.
Description:
ADVNCE is used in specialized applications where the user
wishes to separate the function entry point and the advancement
of the stack. As shown in the example, this often occurs where a
common main line is used by multiple entry points. ADVNCE does
not affect the "A" register, "Q" register or
"X3".
The arguments to the macro are the same as those described
with SENTRY. In fact, SENTRY is shorthand for a call to BENTRY
followed by a call to ADVNCE.
Approximate equivalent code generated:
* advnce
tsx0 .entry
zero .frame,end
symref .retrn,.entry
* advnce ,arb
tsx0 .vntry
zero .frame,end
symref .retrn,.vntry
See Also:
- expl b bmac sentry
- for normal function entry
- expl b bmac backup
- the reverse of ADVNCE
- expl b bmac bend
- end assembler segment
Copyright © 1996, Thinkage Ltd.