The Development Library 6-17
A block is enclosed in
f and h, and can be nested within another block.
The following instructions deal with blocks.
SKIPS instructions
Equivalents
f ...!h Defines a block (generates no code)
Dr62!f ... h >L:L!dD ... .dD
Dr62E!f ... h >L:LE!dD ... .dD
Dr62O!f ... h >LO!dD ... .dD
DrO!f!... h >LO!dD ... .dD
Dr62=O!f!... h >L=O!dD ... .dD
Dr=O!f ... h >L=O!dD ... .dD
Test Dr62P<D!f!... h Test >LP<D!dD ... .dD
Test f ... h Test >LP<D!dD ... .dD
Test →!f ... h
/Test >LP<D!dD!... .dD
Test 09!f ... h /Test!>LP<D!dD ... .dD
Dr5S!f ... h >LD5S!dD ... .dD
Dr5SE!f ... h >LD5SE!dD ... .dD
D:K6=>!f ... h …,8HBHO!>L6=Q!.dD ... .dD!(to create a character string)
OL4<!f ... h …,8H4OO!>L6=Q!.dD ... .dD (to create a code object)
D:KLS_!…2KLEL>!f ... h …-Q/2KLEL>!>L6=Q!dD ... .dD (to create a ‘prolog – length’
object)
/Test is the opposite of Test. For example if Test is
bBzOdB, /Test is bB9[OdB. The test instructions dealing
with the hardware register (
b;D:[8, bM2[8, bDK[8, bTM[8, bDS[3, b;D:[3, bM2[3, bDK[3, bTM[3
and
bDS[3) cannot be inverted.
Once blocks are defined, special instructions can be used in them. The instructions called EXIT and UP allow
jumping to the end or to the beginning of a block.
These instructions
are equivalent to
f!
!!<T6:!
!!<T6:O!
!!<T6:=O!
!!bB[8dB!<T6:!
!!52!
!!52O!
!!52=O!
!!bB[8dB!52!
h!
.dS)mtGGtGm!
!!>L:Ld<G(!
!!>LOd<G(!
!!>L=Od<G(!
!!bB[8dB!‡d<G(!
!!>L:LdS)mtGGtGm!
!!>LOdS)mtGGtGm!
!!>L=OdS)mtGGtGm!
!!bB[8dB!‡dS)mtGGtGm!
.d<G(!
Note: in Saturn mode do not make confusion between EXIT and UP instructions, which are GOTOs, and EXIT
and UP after a test, which are GOYES’s. EXIT and UP can jump to the beginning or to the end of an upper-level
block by specifying the number of blocks to exit, after the UP or EXIT instructions.
These instructions
Are equivalent to
f!
!!f!
!!!!f!
!!!!!!52H!
!!!!!!52V!
!!!!!!<T6:3!
!!!!!!<T6:V!
!!!!h!
!!h!
h!
.dS)mV!
!!.dS)mH!
!!!!.dS)m3!
!!!!!!>L:LdS)mH!
!!!!!!>L:LdS)mV!
!!!!!!>L:Ld<G(3!
!!!!!!>L:Ld<G(V!
!!!!.d<G(3!
!!.d<G(H!
.d<G(V!
Note 1: EXIT1 is equivalent to EXIT, and UP1 is equivalent to UP.
Note 2: the same rules apply in ARM mode: EXITGE3 for example is a BGE for the exit label 3 blocks down