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.