Options

VTT assembly code

Looking at the sample font included with VTT, I come across some code that is not immediately obvious to me, and I couldn't find documentation for it anywhere.

I know you can turn pre-push optimization on/off with
#PUSHOFF
/* ... */
#PUSHON

What does this similar begin/end command pair do that is used in all the template function definitions?
FDEF[], 153
#BEGIN
/* ... */
#END
ENDF[]

Then there seems to be something like variable jump markers, but the syntax is not entirely clear to me.
FDEF[], 153
#BEGIN
#PUSHOFF
DUP[]
#PUSH, 2
RS[]
EQ[]
#PUSH, 1
SWAP[]
#PUSH, BEcln
SWAP[]
JROT[], (BEcln=#LEndClear)
POP[]
/* ... */
#LEndClear:
SWAP[]
POP[]
#LEndFn:
#END
#PUSHON
ENDF[]
As I understand it, the JROT instruction should jump to the calculated instruction stream position of #LEndClear if the first stack element is True. But why is the "BEcln" value pushed _and_ used as an argument to JROT? Why the extra "variable" BEcln? Couldn't be #LEndClear be used for both?
Sign In or Register to comment.