39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
+
|
$ Class
@ Global variable
' Key code
: Label
% Local variable
# User message
! User sound
& User function
Comments are also allowed; these start with a semicolon (outside of a
string literal) and end at the next line break.
=== Escapes ===
|
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
|
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
|
-
+
+
+
+
+
+
+
+
|
(@<name> <value>)
Define a global variable and its initial value.
(@<name> Array <rows> <columns>)
Define a global variable whose value is a reference to a new array, with
the specified dimensions. The maximum number of rows is 64, and the
maximum number of columns is 1024, and the maximum number of cells in
all arrays in total is 65534.
all arrays in total is 65534. All elements are initialized to zero when
the level starts.
(<message> <code...>)
Defines a default message code for all classes which do not specify
their own code for this message.
(&<name> <code...>)
Define a user-defined function. User-defined functions may take any
number of inputs from the stack and leave any number of outputs on the
stack, but may not access user-defined local variables. (It may still
access standard local variables, and all global variables, though.)
=== Class definitions ===
Within a class definition, the following definitions can be used. See also
the section about variables; many of these definitions are used to specify
the initial value for variables of objects of this class.
|
907
908
909
910
911
912
913
914
915
916
917
918
919
920
|
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
Some instructions are block instructions; see the next section.
Many instructions are state-changing instructions; these instructions are
marked with ** in the summary line. Such instructions are not allowed to be
used on the same turn as the IgnoreKey instruction.
<label>
Define a label. Labels are local to the current class. (Label names
always start with a colon.)
=<label>
Go to a label. (Put the colon after the equal sign; this instruction,
and the one below, are using a double sigil.)
,<label>
Call a label as a subroutine; when it returns, comes back to here.
<function>
Call a user-defined function.
. ( x -- )
+ ( in1 in2 -- out )
Add two numbers together.
- ( in1 in2 -- out )
Subtract in2 from in1.
|