Reference Guide

6-22 The Development Library
These instructions
Are equivalent to
{
{
{
UP2
UP3
EXIT1
EXIT3
}
}
}
*.Beg3
*.Beg2
*.Beg1
GOTO.Beg2
GOTO.Beg3
GOTO.End1
GOTO.End3
*.End1
*.End2
*.End3
Notes:
1. EXIT1 is equivalent to EXIT, and UP1 is equivalent to UP.
2. The same rules apply in ARM mode: EXITGE3 for example is a BGE for the exit label 3 blocks down
Using SKELSE, SKEC, SKENC, SKLSE instructions, two blocks create an IFNOT-THEN-ELSE structure.
These
instructions
Are equivalent to
Or in high-level
language
?A=0.A
SKIPYES
{
EXIT
UP
}
SKELSE
{
A+1.A
EXIT
UP
}
?A=0.A GOYES.Beg2
*.Beg1
GOTO.End2 % and not
End1
GOTO.Beg1
*.End1
GOTO.End2
*.Beg2
A+1.A
GOTO.End2
GOTO.Beg2
*.End2
IF NOT A=0 THEN
BEGIN
...
...
END
ELSE
BEGIN
...
...
...
END
Notes:
1. SKELSE places a GOTO between the 2 blocks, SKEC places a GOC, SKENC a GONC and SKLSE places
nothing.
2.
UP
s are compiled directly when encountered while
EXITs
and block openings are compiled later on. You
can not have more than 64 pending EXITs and block openings simultaneously.
Tests
A test instruction (
?A=0.A
) may be followed by:
A
GOYES Label
,
→ Label
or
-> Label
instruction
A
-> {
or
→ {
instruction. In this case, the test is inverted and a skip block is open.
A
RTY
or
RTNYES
instruction.
A
SKIPYES {
or
{
instruction. In this case, a skip block is open.
A
GOTO
,
GOTOL
,
GOVLNG
,
GOSUB
,
GOSUBL
or
GOSBVL
. In this case, the test is inverted and a proper
jump instruction is generated (ie:
?A=B.A GOTO A
is compiled as
?A#B.A { GOTO A }
.
A
EXIT
or
UP
.