These instructions

Are equivalent to

{

*.Beg3

{

*.Beg2

{

*.Beg1

UP2

GOTO.Beg2

UP3

GOTO.Beg3

EXIT1

GOTO.End1

EXIT3

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

Are equivalent to

Or in high-level

instructions

 

language

?A=0.A

?A=0.A GOYES.Beg2

IF NOT A=0 THEN

SKIPYES

*.Beg1

BEGIN

{

GOTO.End2 % and not

...

EXIT

End1

...

UP

GOTO.Beg1

END

}

*.End1

ELSE

SKELSE

GOTO.End2

BEGIN

{

*.Beg2

...

A+1.A

A+1.A

...

EXIT

GOTO.End2

...

UP

GOTO.Beg2

END

}

*.End2

 

Notes:

1.SKELSE places a GOTO between the 2 blocks, SKEC places a GOC, SKENC a GONC and SKLSE places nothing.

2.UPs 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.

6-22 The Development Library