The foundation of Skips is the Block structure. A block is enclosed in { and }, and can be nested within another block. The following instructions deal with blocks.

SKIPS instructions

Equivalents

 

 

 

{ ... }

 

 

 

Defines a block (generates no code)

SKIP { ...

}

 

GOTO .S

...

*.S

 

 

SKIPL {

...

}

GOTOL .S ...

*.S

 

 

SKIPC {

...

}

GOC .S ...

*.S

 

 

SKC {

... }

 

GOC .S ...

*.S

 

 

SKIPNC

{...

}

GONC .S

...

*.S

 

 

SKNC { ...

}

 

GONC .S

...

*.S

 

 

Test SKIPYES { }...

Test GOYES .S ...

*.S

 

Test { ...

}

 

Test GOYES .S ...

*.S

 

Test

{ ...

}

 

/Test GOYES .S...

*.S

 

Test -> { ...

}

/Test GOYES .S ...

*.S

 

SKUB { ...

}

 

GOSUB .S ...

*.S

 

 

SKUBL {

...

}

GOSUBL .S *.S...

 

STRING

{ ...

}

$/02A2C GOIN5 *.S ...

*.S (to create a character string)

CODE { ...

}

 

$/02DCC GOIN5 *.S ...

*.S (to create a code object)

STROBJ

$PROLOG { ... }

$(5)PROLOG GOIN5 .S ... *.S (to create a ‘prolog – length’

 

 

 

 

object)

 

 

 

 

/Test is the opposite of Test. For example if Test is ?A<C.A, /Test is ?A>=C.A. The test instructions dealing with the hardware register (?HST=0, ?MP=0, ?SR=0, ?XM=0, ?SB=1, ?HST=1, ?MP=1,

?SR=1, ?XM=1 and ?SB=1) 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

{

*.Beginning

EXIT

GOTO.End

EXITC

GOC.End

EXITNC

GONC.End

?A=0.A EXIT

?A=0.A ¨.End

UP

GOTO.Beginning

UPC

GOC.Beginning

UPNC

GONC.Beginning

?A=0.A UP

?A=0.A ¨.Beginning

}

*.End

Note: In Saturn mode do not be confused 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.

The Development Library 6-21