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
The Development Library