LispBM
lbm_defines.h
Go to the documentation of this file.
1 /*
2  Copyright 2022, 2024 Joel Svensson svenssonjoel@yahoo.se
3 
4  This program is free software: you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation, either version 3 of the License, or
7  (at your option) any later version.
8 
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17 
18 #ifndef LBM_DEFINES_H_
19 #define LBM_DEFINES_H_
20 
21 
22 /* ------------------------------------------------------------
23  Types
24  ------------------------------------------------------------ */
25 
26 #ifndef LBM64
27 
28 #define LBM_ADDRESS_SHIFT 2
29 #define LBM_VAL_SHIFT 4
30 #define LBM_ENC_1 0x10
31 
32 #define LBM_PTR_BIT 0x00000001u
33 #define LBM_PTR_VAL_MASK 0x03FFFFFCu
34 #define LBM_PTR_TYPE_MASK 0xFC000000u
35 #define LBM_PTR_NULL (0x03FFFFFCu >> 2)
36 
37 // The address is an index into the const heap.
38 #define LBM_PTR_TO_CONSTANT_BIT 0x04000000u
39 #define LBM_PTR_TO_CONSTANT_MASK ~LBM_PTR_TO_CONSTANT_BIT
40 #define LBM_PTR_TO_CONSTANT_SHIFT 26
41 
42 #define LBM_POINTER_TYPE_FIRST 0x10000000u
43 #define LBM_TYPE_CONS 0x10000000u
44 #define LBM_TYPE_CONS_CONST 0x14000000u
45 #define LBM_NON_CONS_POINTER_TYPE_FIRST 0x20000000u
46 #define LBM_TYPE_I32 0x28000000u
47 #define LBM_TYPE_U32 0x38000000u
48 #define LBM_TYPE_I64 0x48000000u
49 #define LBM_TYPE_U64 0x58000000u
50 #define LBM_TYPE_FLOAT 0x68000000u
51 #define LBM_TYPE_DOUBLE 0x78000000u
52 #define LBM_TYPE_ARRAY 0x80000000u // ByteArray
53 #define LBM_TYPE_ARRAY_CONST 0x84000000u
54 #define LBM_TYPE_CHANNEL 0x90000000u
55 #define LBM_TYPE_CUSTOM 0xA0000000u
56 #define LBM_TYPE_LISPARRAY 0xB0000000u // a "real" array
57 #define LBM_TYPE_LISPARRAY_CONST 0xB4000000u
58 #define LBM_TYPE_DEFRAG_MEM 0xC0000000u
59 #define LBM_POINTER_TYPE_LAST 0xCC000000u
60 // POINTER_TYPE_LAST is less than the value used for CONTINUATION_INTERNAL
61 
62 #define LBM_CONS_TYPE_MASK 0xF0000000u
63 #define LBM_CONS_CONST_TYPE_MASK 0xFF000000u
64 
65 #define LBM_CONTINUATION_INTERNAL 0xF8000001u // PTR bit set
66 #define LBM_CONTINUATION_INTERNAL_TYPE 0xF8000000u
67 
68 #define LBM_GC_MASK 0x00000002u
69 #define LBM_GC_MARKED 0x00000002u
70 
71 #define LBM_VAL_MASK 0xFFFFFFF0u
72 #define LBM_VAL_TYPE_MASK 0x0000000Cu
73 #define LBM_TYPE_MASK 0xFC00000Cu
74 #define LBM_NUMBER_MASK 0x08000000u
75  // gc ptr
76 #define LBM_TYPE_SYMBOL 0x00000000u // 00 0 0
77 #define LBM_TYPE_CHAR 0x00000004u // 01 0 0
78 #define LBM_TYPE_BYTE 0x00000004u
79 #define LBM_TYPE_I 0x00000008u // 10 0 0
80 #define LBM_TYPE_U 0x0000000Cu // 11 0 0
81 #define LBM_LOW_RESERVED_BITS 0x0000000Fu // 11 1 1
82 
83 #else /* 64 bit Version */
84 
85 #define LBM_ADDRESS_SHIFT 2
86 #define LBM_VAL_SHIFT 8
87 #define LBM_ENC_1 0x100
88 
89 #define LBM_PTR_BIT (lbm_uint)0x1
90 #define LBM_PTR_VAL_MASK (lbm_uint)0x03FFFFFFFFFFFFFC
91 #define LBM_PTR_TYPE_MASK (lbm_uint)0xFC00000000000000
92 #define LBM_PTR_NULL ((lbm_uint)0x03FFFFFFFFFFFFFC >> 2)
93 
94 #define LBM_PTR_TO_CONSTANT_BIT (lbm_uint)0x0400000000000000
95 #define LBM_PTR_TO_CONSTANT_MASK ~LBM_PTR_TO_CONSTANT_BIT
96 #define LBM_PTR_TO_CONSTANT_SHIFT 58
97 
98 #define LBM_POINTER_TYPE_FIRST (lbm_uint)0x1000000000000000
99 #define LBM_TYPE_CONS (lbm_uint)0x1000000000000000
100 #define LBM_TYPE_CONS_CONST (lbm_uint)0x1400000000000000
101 #define LBM_NON_CONS_POINTER_TYPE_FIRST (lbm_uint)0x2000000000000000
102 #define LBM_TYPE_I64 (lbm_uint)0x2800000000000000
103 #define LBM_TYPE_U64 (lbm_uint)0x3800000000000000
104 #define LBM_TYPE_DOUBLE (lbm_uint)0x4800000000000000
105 #define LBM_TYPE_ARRAY (lbm_uint)0x5000000000000000
106 #define LBM_TYPE_ARRAY_CONST (lbm_uint)0x5400000000000000
107 #define LBM_TYPE_CHANNEL (lbm_uint)0x7000000000000000
108 #define LBM_TYPE_CUSTOM (lbm_uint)0x8000000000000000
109 #define LBM_TYPE_LISPARRAY (lbm_uint)0x9000000000000000
110 #define LBM_TYPE_LISPARRAY_CONST (lbm_uint)0x9400000000000000
111 #define LBM_TYPE_DEFRAG_MEM (lbm_uint)0xA000000000000000
112 #define LBM_POINTER_TYPE_LAST (lbm_uint)0xAC00000000000000
113 // POINTER_TYPE_LAST is less than the value used for CONTINUATION_INTERNAL
114 
115 #define LBM_CONS_TYPE_MASK (lbm_uint)0xF000000000000000
116 #define LBM_CONS_CONST_TYPE_MASK (lbm_uint)0xFF00000000000000
117 
118 #define LBM_CONTINUATION_INTERNAL (lbm_uint)0xF800000000000001
119 #define LBM_CONTINUATION_INTERNAL_TYPE (lbm_uint)0xF800000000000000
120 
121 #define LBM_GC_MASK (lbm_uint)0x2
122 #define LBM_GC_MARKED (lbm_uint)0x2
123 
124 /* 8 - 2 free bits to encode type information into */
125 #define LBM_VAL_MASK (lbm_uint)0xFFFFFFFFFFFFFF00
126 #define LBM_VAL_TYPE_MASK (lbm_uint)0xFC
127 #define LBM_TYPE_MASK (lbm_uint)0xFF000000000000FC
128 #define LBM_NUMBER_MASK (lbm_uint)0x0800000000000000
129 // gc ptr
130 #define LBM_TYPE_SYMBOL (lbm_uint)0x0 // 00 00 00 0 0
131 #define LBM_TYPE_CHAR (lbm_uint)0x4 // 00 00 01 0 0
132 #define LBM_TYPE_BYTE (lbm_uint)0x4
133 #define LBM_TYPE_I32 (lbm_uint)0x8 // 00 00 10 0 0
134 #define LBM_TYPE_U32 (lbm_uint)0xC // 00 00 11 0 0
135 #define LBM_TYPE_I (lbm_uint)0x14 // 00 01 01 0 0
136 #define LBM_TYPE_U (lbm_uint)0x18 // 00 01 10 0 0
137 #define LBM_TYPE_FLOAT (lbm_uint)0x1C // 00 01 11 0 0
138 #define LBM_LOW_RESERVED_BITS (lbm_uint)0xFF // 11 11 11 1 1
139 
140 #endif
141 /* ------------------------------------------------------------
142  Built in symbols
143  ------------------------------------------------------------ */
144 
145 // Default and fixed symbol ids
146 #define SYM_NIL 0x0
147 #define SYM_TRUE 0x2
148 #define SYM_DONTCARE 0x9
149 #define SYM_TIMEOUT 0xA
150 
151 // 0x20 - 0x2F are errors
152 #define SYM_RERROR 0x20 /* READ ERROR */
153 #define SYM_TERROR 0x21 /* TYPE ERROR */
154 #define SYM_EERROR 0x22 /* EVAL ERROR */
155 #define SYM_MERROR 0x23
156 #define SYM_NOT_FOUND 0x24
157 #define SYM_DIVZERO 0x25
158 #define SYM_FATAL_ERROR 0x26 /* Runtime system is corrupt */
159 #define SYM_STACK_ERROR 0x27
160 #define SYM_RECOVERED 0x28
161 #define SYM_ERROR_FLASH_HEAP_FULL 0x29
162 
163 
164 //#define TYPE_CLASSIFIER_STARTS 0x30
165 #define SYM_ARRAY_TYPE 0x30
166 #define SYM_RAW_I_TYPE 0x31
167 #define SYM_RAW_U_TYPE 0x32
168 #define SYM_RAW_F_TYPE 0x33
169 #define SYM_IND_I_TYPE 0x34
170 #define SYM_IND_U_TYPE 0x35
171 #define SYM_IND_F_TYPE 0x36
172 #define SYM_CHANNEL_TYPE 0x37
173 #define SYM_CUSTOM_TYPE 0x38
174 #define SYM_LISPARRAY_TYPE 0x39
175 #define SYM_DEFRAG_MEM_TYPE 0x3A
176 #define SYM_DEFRAG_ARRAY_TYPE 0x3B
177 //#define TYPE_CLASSIFIER_ENDS 0x39
178 #define SYM_NONSENSE 0x3C
179 
180 #define SYM_NO_MATCH 0x40
181 #define SYM_MATCH_ANY 0x41
182 
183 // Type identifying symbols
184 #define SYM_TYPE_LIST 0x50
185 #define SYM_TYPE_I 0x51
186 #define SYM_TYPE_U 0x52
187 #define SYM_TYPE_FLOAT 0x53
188 #define SYM_TYPE_I32 0x54
189 #define SYM_TYPE_U32 0x55
190 #define SYM_TYPE_DOUBLE 0x56
191 #define SYM_TYPE_I64 0x57
192 #define SYM_TYPE_U64 0x58
193 #define SYM_TYPE_ARRAY 0x59
194 #define SYM_TYPE_SYMBOL 0x5A
195 #define SYM_TYPE_CHAR 0x5B
196 #define SYM_TYPE_BYTE 0x5C
197 #define SYM_TYPE_CHANNEL 0x5E
198 #define SYM_TYPE_LISPARRAY 0x5F
199 #define SYM_TYPE_DEFRAG_MEM 0x60
200 #define SYM_TYPE_CUSTOM 0x61
201 
202 //Relevant for the tokenizer and reader
203 #define TOKENIZER_SYMBOLS_START 0x70
204 #define SYM_OPENPAR 0x70
205 #define SYM_CLOSEPAR 0x71
206 #define SYM_BACKQUOTE 0x72
207 #define SYM_COMMA 0x73
208 #define SYM_COMMAAT 0x74
209 #define SYM_TOKENIZER_DONE 0x75
210 #define SYM_DOT 0x76
211 #define SYM_QUOTE_IT 0x77
212 #define SYM_COLON 0x78
213 #define SYM_TOKENIZER_WAIT 0x79
214 #define SYM_OPENBRACK 0x80
215 #define SYM_CLOSEBRACK 0x81
216 #define SYM_TOKENIZER_RERROR 0x82
217 #define SYM_OPENCURL 0x84
218 #define SYM_CONST 0x85
219 #define TOKENIZER_SYMBOLS_END 0x85
220 
221 // Built in special forms:
222 // Special forms get their arguments unevaluated
223 // and are free to choose to evaluate one or more
224 // of them as needed.
225 // Consecutive for lookup-application.
226 #define SPECIAL_FORMS_START 0x100
227 #define SYM_QUOTE 0x100
228 #define SYM_DEFINE 0x101
229 #define SYM_PROGN 0x102
230 #define SYM_LAMBDA 0x103
231 #define SYM_IF 0x104
232 #define SYM_LET 0x105
233 #define SYM_AND 0x106
234 #define SYM_OR 0x107
235 #define SYM_MATCH 0x108
236 #define SYM_RECEIVE 0x109
237 #define SYM_RECEIVE_TIMEOUT 0x10A
238 #define SYM_CALLCC 0x10B
239 #define SYM_ATOMIC 0x10C
240 #define SYM_MACRO 0x10D
241 #define SYM_CONT 0x10E
242 #define SYM_CLOSURE 0x10F
243 #define SYM_COND 0x110
244 #define SYM_APP_CONT 0x111
245 #define SYM_PROGN_VAR 0x112
246 #define SYM_SETQ 0x113
247 #define SYM_MOVE_TO_FLASH 0x114
248 #define SYM_LOOP 0x115
249 #define SYM_TRAP 0x116
250 #define SPECIAL_FORMS_END 0x116
251 
252 #ifndef LBM64
253 #define SPECIAL_FORMS_MASK 0xFFFFFF00
254 #define SPECIAL_FORMS_BIT 0x00000100
255 #define ENC_SPECIAL_FORMS_MASK 0xFFFFF000
256 #define ENC_SPECIAL_FORMS_BIT 0x00001000
257 #define SPECIAL_FORMS_INDEX_MASK 0x000000FF
258 #else
259 #define SPECIAL_FORMS_MASK 0xFFFFFFFFFFFFFF00
260 #define SPECIAL_FORMS_BIT 0x0000000000000100
261 #define ENC_SPECIAL_FORMS_MASK 0xFFFFFFFFFFFF0000
262 #define ENC_SPECIAL_FORMS_BIT 0x0000000000010000
263 #define SPECIAL_FORMS_INDEX_MASK 0x00000000000000FF
264 #endif
265 
266 // Fundamental built in operations that take their
267 // arguments on stack. Fundamentals do not handle
268 // their own GC and they are not allowed to create
269 // continuations.
270 #define SYM_ADD 0x20000
271 #define SYM_SUB 0x20001
272 #define SYM_MUL 0x20002
273 #define SYM_DIV 0x20003
274 #define SYM_MOD 0x20004
275 #define SYM_EQ 0x20005
276 #define SYM_NOT_EQ 0x20006
277 #define SYM_NUMEQ 0x20007
278 #define SYM_NUM_NOT_EQ 0x20008
279 #define SYM_LT 0x20009
280 #define SYM_GT 0x2000A
281 #define SYM_LEQ 0x2000B
282 #define SYM_GEQ 0x2000C
283 #define SYM_NOT 0x2000D
284 #define SYM_PERFORM_GC 0x2000E
285 #define SYM_SELF 0x2000F
286 #define SYM_SET_MAILBOX_SIZE 0x20010
287 #define SYM_CONS 0x20011
288 #define SYM_CAR 0x20012
289 #define SYM_CDR 0x20013
290 #define SYM_LIST 0x20014
291 #define SYM_APPEND 0x20015
292 #define SYM_UNDEFINE 0x20016
293 #define SYM_BYTEARRAY_CREATE 0x20017
294 #define SYM_SYMBOL_TO_STRING 0x20018
295 #define SYM_STRING_TO_SYMBOL 0x20019
296 #define SYM_SYMBOL_TO_UINT 0x2001A
297 #define SYM_UINT_TO_SYMBOL 0x2001B
298 #define SYM_SET_CAR 0x2001C
299 #define SYM_SET_CDR 0x2001D
300 #define SYM_SET_IX 0x2001E
301 #define SYM_ASSOC 0x2001F
302 #define SYM_ACONS 0x20020
303 #define SYM_SET_ASSOC 0x20021
304 #define SYM_COSSA 0x20022
305 #define SYM_IX 0x20023
306 #define SYM_TO_I 0x20024
307 #define SYM_TO_I32 0x20025
308 #define SYM_TO_U 0x20026
309 #define SYM_TO_U32 0x20027
310 #define SYM_TO_FLOAT 0x20028
311 #define SYM_TO_I64 0x20029
312 #define SYM_TO_U64 0x2002A
313 #define SYM_TO_DOUBLE 0x2002B
314 #define SYM_TO_BYTE 0x2002C
315 #define SYM_SHL 0x2002D
316 #define SYM_SHR 0x2002E
317 #define SYM_BITWISE_AND 0x2002F
318 #define SYM_BITWISE_OR 0x20030
319 #define SYM_BITWISE_XOR 0x20031
320 #define SYM_BITWISE_NOT 0x20032
321 #define SYM_CUSTOM_DESTRUCT 0x20033
322 #define SYM_TYPE_OF 0x20034
323 #define SYM_LIST_LENGTH 0x20035
324 #define SYM_RANGE 0x20036
325 #define SYM_REG_EVENT_HANDLER 0x20037
326 #define SYM_TAKE 0x20038
327 #define SYM_DROP 0x20039
328 #define SYM_MKARRAY 0x2003A
329 #define SYM_ARRAY_TO_LIST 0x2003B
330 #define SYM_LIST_TO_ARRAY 0x2003C
331 #define SYM_DM_CREATE 0x2003D
332 #define SYM_DM_ALLOC 0x2003E
333 #define SYM_IS_LIST 0x2003F
334 #define SYM_IS_NUMBER 0x20040
335 
336 
337 // Apply funs:
338 // Get their arguments in evaluated form on the stack.
339 // Consecutive value symbols for lookup-application
340 // apply funs handle their own GC needs and can
341 // create continuations.
342 #define SYM_SETVAR 0x30000
343 #define SYM_READ 0x30001
344 #define SYM_READ_PROGRAM 0x30002
345 #define SYM_READ_AND_EVAL_PROGRAM 0x30003
346 #define SYM_SPAWN 0x30004
347 #define SYM_SPAWN_TRAP 0x30005
348 #define SYM_YIELD 0x30006
349 #define SYM_WAIT 0x30007
350 #define SYM_EVAL 0x30008
351 #define SYM_EVAL_PROGRAM 0x30009
352 #define SYM_SEND 0x3000A
353 #define SYM_EXIT_OK 0x3000B
354 #define SYM_EXIT_ERROR 0x3000C
355 #define SYM_MAP 0x3000D
356 #define SYM_REVERSE 0x3000E
357 #define SYM_FLATTEN 0x3000F
358 #define SYM_UNFLATTEN 0x30010
359 #define SYM_KILL 0x30011
360 #define SYM_SLEEP 0x30012
361 #define SYM_MERGE 0x30013
362 #define SYM_SORT 0x30014
363 #define SYM_REST_ARGS 0x30015
364 #define SYM_ROTATE 0x30016
365 
366 #define SYMBOL_KIND(X) ((X) >> 16)
367 #define SYMBOL_KIND_SPECIAL 0
368 #define SYMBOL_KIND_EXTENSION 1
369 #define SYMBOL_KIND_FUNDAMENTAL 2
370 #define SYMBOL_KIND_APPFUN 3
371 
372 #define SYMBOL_IX(X) ((X) & 0xFFFF)
373 
374 #define SPECIAL_SYMBOLS_START 0
375 #define SPECIAL_SYMBOLS_END 0xFFFF
376 #define EXTENSION_SYMBOLS_START 0x10000
377 #define EXTENSION_SYMBOLS_END 0x1FFFF
378 #define FUNDAMENTAL_SYMBOLS_START 0x20000
379 #define FUNDAMENTAL_SYMBOLS_END 0x2FFFF
380 #define APPFUN_SYMBOLS_START 0x30000
381 #define APPFUN_SYMBOLS_END 0x3FFFF
382 #define RUNTIME_SYMBOLS_START 0x40000
383 #define MAX_SYMBOL_VALUE 0x0FFFFFFF
384 
385 // This leaves 268173312 runtime symbols available.
386 
387 /* ------------------------------------------------------------
388  Encoded Symbols
389  ------------------------------------------------------------ */
390 
391 #define ENC_SYM(X) (((X) << LBM_VAL_SHIFT) | LBM_TYPE_SYMBOL)
392 
393 #define ENC_SYM_NIL ENC_SYM(SYM_NIL)
394 #define ENC_SYM_TRUE ENC_SYM(SYM_TRUE)
395 #define ENC_SYM_DONTCARE ENC_SYM(SYM_DONTCARE)
396 #define ENC_SYM_TIMEOUT ENC_SYM(SYM_TIMEOUT)
397 
398 #define ENC_SYM_RERROR ENC_SYM(SYM_RERROR)
399 #define ENC_SYM_TERROR ENC_SYM(SYM_TERROR)
400 #define ENC_SYM_EERROR ENC_SYM(SYM_EERROR)
401 #define ENC_SYM_MERROR ENC_SYM(SYM_MERROR)
402 #define ENC_SYM_NOT_FOUND ENC_SYM(SYM_NOT_FOUND)
403 #define ENC_SYM_DIVZERO ENC_SYM(SYM_DIVZERO)
404 #define ENC_SYM_FATAL_ERROR ENC_SYM(SYM_FATAL_ERROR)
405 #define ENC_SYM_STACK_ERROR ENC_SYM(SYM_STACK_ERROR)
406 #define ENC_SYM_RECOVERED ENC_SYM(SYM_RECOVERED)
407 #define ENC_SYM_ERROR_FLASH_HEAP_FULL ENC_SYM(SYM_ERROR_FLASH_HEAP_FULL)
408 
409 #define ENC_SYM_ARRAY_TYPE ENC_SYM(SYM_ARRAY_TYPE)
410 #define ENC_SYM_RAW_I_TYPE ENC_SYM(SYM_RAW_I_TYPE)
411 #define ENC_SYM_RAW_U_TYPE ENC_SYM(SYM_RAW_U_TYPE)
412 #define ENC_SYM_RAW_F_TYPE ENC_SYM(SYM_RAW_F_TYPE)
413 #define ENC_SYM_IND_I_TYPE ENC_SYM(SYM_IND_I_TYPE)
414 #define ENC_SYM_IND_U_TYPE ENC_SYM(SYM_IND_U_TYPE)
415 #define ENC_SYM_IND_F_TYPE ENC_SYM(SYM_IND_F_TYPE)
416 #define ENC_SYM_CHANNEL_TYPE ENC_SYM(SYM_CHANNEL_TYPE)
417 #define ENC_SYM_CUSTOM_TYPE ENC_SYM(SYM_CUSTOM_TYPE)
418 #define ENC_SYM_LISPARRAY_TYPE ENC_SYM(SYM_LISPARRAY_TYPE)
419 #define ENC_SYM_DEFRAG_MEM_TYPE ENC_SYM(SYM_DEFRAG_MEM_TYPE)
420 #define ENC_SYM_DEFRAG_ARRAY_TYPE ENC_SYM(SYM_DEFRAG_ARRAY_TYPE)
421 #define ENC_SYM_NONSENSE ENC_SYM(SYM_NONSENSE)
422 
423 #define ENC_SYM_NO_MATCH ENC_SYM(SYM_NO_MATCH)
424 #define ENC_SYM_MATCH_ANY ENC_SYM(SYM_MATCH_ANY)
425 
426 #define ENC_SYM_TYPE_LIST ENC_SYM(SYM_TYPE_LIST)
427 #define ENC_SYM_TYPE_I ENC_SYM(SYM_TYPE_I)
428 #define ENC_SYM_TYPE_U ENC_SYM(SYM_TYPE_U)
429 #define ENC_SYM_TYPE_FLOAT ENC_SYM(SYM_TYPE_FLOAT)
430 #define ENC_SYM_TYPE_I32 ENC_SYM(SYM_TYPE_I32)
431 #define ENC_SYM_TYPE_U32 ENC_SYM(SYM_TYPE_U32)
432 #define ENC_SYM_TYPE_DOUBLE ENC_SYM(SYM_TYPE_DOUBLE)
433 #define ENC_SYM_TYPE_I64 ENC_SYM(SYM_TYPE_I64)
434 #define ENC_SYM_TYPE_U64 ENC_SYM(SYM_TYPE_U64)
435 #define ENC_SYM_TYPE_ARRAY ENC_SYM(SYM_TYPE_ARRAY)
436 #define ENC_SYM_TYPE_SYMBOL ENC_SYM(SYM_TYPE_SYMBOL)
437 #define ENC_SYM_TYPE_CHAR ENC_SYM(SYM_TYPE_CHAR)
438 #define ENC_SYM_TYPE_BYTE ENC_SYM(SYM_TYPE_BYTE)
439 #define ENC_SYM_TYPE_CHANNEL ENC_SYM(SYM_TYPE_CHANNEL)
440 #define ENC_SYM_TYPE_LISPARRAY ENC_SYM(SYM_TYPE_LISPARRAY)
441 #define ENC_SYM_TYPE_DEFRAG_MEM ENC_SYM(SYM_TYPE_DEFRAG_MEM)
442 #define ENC_SYM_TYPE_CUSTOM ENC_SYM(SYM_TYPE_CUSTOM)
443 
444 #define ENC_SYM_OPENPAR ENC_SYM(SYM_OPENPAR)
445 #define ENC_SYM_CLOSEPAR ENC_SYM(SYM_CLOSEPAR)
446 #define ENC_SYM_BACKQUOTE ENC_SYM(SYM_BACKQUOTE)
447 #define ENC_SYM_COMMA ENC_SYM(SYM_COMMA)
448 #define ENC_SYM_COMMAAT ENC_SYM(SYM_COMMAAT)
449 #define ENC_SYM_TOKENIZER_DONE ENC_SYM(SYM_TOKENIZER_DONE)
450 #define ENC_SYM_DOT ENC_SYM(SYM_DOT)
451 #define ENC_SYM_QUOTE_IT ENC_SYM(SYM_QUOTE_IT)
452 #define ENC_SYM_COLON ENC_SYM(SYM_COLON)
453 #define ENC_SYM_TOKENIZER_WAIT ENC_SYM(SYM_TOKENIZER_WAIT)
454 #define ENC_SYM_OPENBRACK ENC_SYM(SYM_OPENBRACK)
455 #define ENC_SYM_CLOSEBRACK ENC_SYM(SYM_CLOSEBRACK)
456 #define ENC_SYM_TOKENIZER_RERROR ENC_SYM(SYM_TOKENIZER_RERROR)
457 #define ENC_SYM_OPENCURL ENC_SYM(SYM_OPENCURL)
458 #define ENC_SYM_CONST ENC_SYM(SYM_CONST)
459 
460 #define ENC_SYM_QUOTE ENC_SYM(SYM_QUOTE)
461 #define ENC_SYM_DEFINE ENC_SYM(SYM_DEFINE)
462 #define ENC_SYM_PROGN ENC_SYM(SYM_PROGN)
463 #define ENC_SYM_LAMBDA ENC_SYM(SYM_LAMBDA)
464 #define ENC_SYM_IF ENC_SYM(SYM_IF)
465 #define ENC_SYM_LET ENC_SYM(SYM_LET)
466 #define ENC_SYM_AND ENC_SYM(SYM_AND)
467 #define ENC_SYM_OR ENC_SYM(SYM_OR)
468 #define ENC_SYM_MATCH ENC_SYM(SYM_MATCH)
469 #define ENC_SYM_RECEIVE ENC_SYM(SYM_RECEIVE)
470 #define ENC_SYM_RECEIVE_TIMEOUT ENC_SYM(SYM_RECEIVE_TIMEOUT)
471 #define ENC_SYM_CALLCC ENC_SYM(SYM_CALLCC)
472 #define ENC_SYM_ATOMIC ENC_SYM(SYM_ATOMIC)
473 #define ENC_SYM_MACRO ENC_SYM(SYM_MACRO)
474 #define ENC_SYM_CONT ENC_SYM(SYM_CONT)
475 #define ENC_SYM_CLOSURE ENC_SYM(SYM_CLOSURE)
476 #define ENC_SYM_COND ENC_SYM(SYM_COND)
477 #define ENC_SYM_APP_CONT ENC_SYM(SYM_APP_CONT)
478 #define ENC_SYM_PROGN_VAR ENC_SYM(SYM_PROGN_VAR)
479 #define ENC_SYM_SETQ ENC_SYM(SYM_SETQ)
480 #define ENC_SYM_MOVE_TO_FLASH ENC_SYM(SYM_MOVE_TO_FLASH)
481 #define ENC_SYM_IN_ENV ENC_SYM(SYM_IN_ENV)
482 
483 #define ENC_SYM_SETVAR ENC_SYM(SYM_SETVAR)
484 #define ENC_SYM_READ ENC_SYM(SYM_READ)
485 #define ENC_SYM_READ_PROGRAM ENC_SYM(SYM_READ_PROGRAM)
486 #define ENC_SYM_READ_AND_EVAL_PROGRAM ENC_SYM(SYM_READ_AND_EVAL_PROGRAM)
487 #define ENC_SYM_SPAWN ENC_SYM(SYM_SPAWN)
488 #define ENC_SYM_SPAWN_TRAP ENC_SYM(SYM_SPAWN_TRAP)
489 #define ENC_SYM_YIELD ENC_SYM(SYM_YIELD)
490 #define ENC_SYM_WAIT ENC_SYM(SYM_WAIT)
491 #define ENC_SYM_EVAL ENC_SYM(SYM_EVAL)
492 #define ENC_SYM_EVAL_PROGRAM ENC_SYM(SYM_EVAL_PROGRAM)
493 #define ENC_SYM_SEND ENC_SYM(SYM_SEND)
494 #define ENC_SYM_EXIT_OK ENC_SYM(SYM_EXIT_OK)
495 #define ENC_SYM_EXIT_ERROR ENC_SYM(SYM_EXIT_ERROR)
496 #define ENC_SYM_MAP ENC_SYM(SYM_MAP)
497 #define ENC_SYM_REVERSE ENC_SYM(SYM_REVERSE)
498 #define ENC_SYM_FLATTEN ENC_SYM(SYM_FLATTEN)
499 #define ENC_SYM_UNFLATTEN ENC_SYM(SYM_UNFLATTEN)
500 #define ENC_SYM_KILL ENC_SYM(SYM_KILL)
501 #define ENC_SYM_SLEEP ENC_SYM(SYM_SLEEP)
502 #define ENC_SYM_MERGE ENC_SYM(SYM_MERGE)
503 #define ENC_SYM_SORT ENC_SYM(SYM_SORT)
504 #define ENC_SYM_REST_ARGS ENC_SYM(SYM_REST_ARGS)
505 #define ENC_SYM_ROTATE ENC_SYM(SYM_ROTATE)
506 #define ENC_SYM_TRAP ENC_SYM(SYM_TRAP)
507 
508 #define ENC_SYM_ADD ENC_SYM(SYM_ADD)
509 #define ENC_SYM_SUB ENC_SYM(SYM_SUB)
510 #define ENC_SYM_MUL ENC_SYM(SYM_MUL)
511 #define ENC_SYM_DIV ENC_SYM(SYM_DIV)
512 #define ENC_SYM_MOD ENC_SYM(SYM_MOD)
513 #define ENC_SYM_EQ ENC_SYM(SYM_EQ)
514 #define ENC_SYM_NOT_EQ ENC_SYM(SYM_NOT_EQ)
515 #define ENC_SYM_NUMEQ ENC_SYM(SYM_NUMEQ)
516 #define ENC_SYM_NUM_NOT_EQ ENC_SYM(SYM_NUM_NOT_EQ)
517 #define ENC_SYM_LT ENC_SYM(SYM_LT)
518 #define ENC_SYM_GT ENC_SYM(SYM_GT)
519 #define ENC_SYM_LEQ ENC_SYM(SYM_LEQ)
520 #define ENC_SYM_GEQ ENC_SYM(SYM_GEQ)
521 #define ENC_SYM_NOT ENC_SYM(SYM_NOT)
522 #define ENC_SYM_PERFORM_GC ENC_SYM(SYM_PERFORM_GC)
523 #define ENC_SYM_SELF ENC_SYM(SYM_SELF)
524 #define ENC_SYM_SET_MAILBOX_SIZE ENC_SYM(SYM_SET_MAILBOX_SIZE)
525 #define ENC_SYM_CONS ENC_SYM(SYM_CONS)
526 #define ENC_SYM_CAR ENC_SYM(SYM_CAR)
527 #define ENC_SYM_CDR ENC_SYM(SYM_CDR)
528 #define ENC_SYM_LIST ENC_SYM(SYM_LIST)
529 #define ENC_SYM_APPEND ENC_SYM(SYM_APPEND)
530 #define ENC_SYM_UNDEFINE ENC_SYM(SYM_UNDEFINE)
531 #define ENC_SYM_BYTEARRAY_CREATE ENC_SYM(SYM_BYTEARRAY_CREATE)
532 #define ENC_SYM_SYMBOL_TO_STRING ENC_SYM(SYM_ENC_SYMBOL_TO_STRING)
533 #define ENC_SYM_STRING_TO_SYMBOL ENC_SYM(SYM_STRING_TO_SYMBOL)
534 #define ENC_SYM_SYMBOL_TO_UINT ENC_SYM(SYM_SYMBOL_TO_UINT)
535 #define ENC_SYM_UINT_TO_SYMBOL ENC_SYM(SYM_UINT_TO_SYMBOL)
536 #define ENC_SYM_SET_CAR ENC_SYM(SYM_SET_CAR)
537 #define ENC_SYM_SET_CDR ENC_SYM(SYM_SET_CDR)
538 #define ENC_SYM_SET_IX ENC_SYM(SYM_SET_IX)
539 #define ENC_SYM_ASSOC ENC_SYM(SYM_ASSOC)
540 #define ENC_SYM_ACONS ENC_SYM(SYM_ACONS)
541 #define ENC_SYM_SET_ASSOC ENC_SYM(SYM_SET_ASSOC)
542 #define ENC_SYM_COSSA ENC_SYM(SYM_COSSA)
543 #define ENC_SYM_IX ENC_SYM(SYM_IX)
544 #define ENC_SYM_TO_I ENC_SYM(SYM_TO_I)
545 #define ENC_SYM_TO_I32 ENC_SYM(SYM_TO_I32)
546 #define ENC_SYM_TO_U ENC_SYM(SYM_TO_U)
547 #define ENC_SYM_TO_U32 ENC_SYM(SYM_TO_U32)
548 #define ENC_SYM_TO_FLOAT ENC_SYM(SYM_TO_FLOAT)
549 #define ENC_SYM_TO_I64 ENC_SYM(SYM_TO_I64)
550 #define ENC_SYM_TO_U64 ENC_SYM(SYM_TO_U64)
551 #define ENC_SYM_TO_DOUBLE ENC_SYM(SYM_TO_DOUBLE)
552 #define ENC_SYM_TO_BYTE ENC_SYM(SYM_TO_BYTE)
553 #define ENC_SYM_SHL ENC_SYM(SYM_SHL)
554 #define ENC_SYM_SHR ENC_SYM(SYM_SHR)
555 #define ENC_SYM_BITWISE_AND ENC_SYM(SYM_BITWISE_AND)
556 #define ENC_SYM_BITWISE_OR ENC_SYM(SYM_BITWISE_OR)
557 #define ENC_SYM_BITWISE_XOR ENC_SYM(SYM_BITWISE_XOR)
558 #define ENC_SYM_BITWISE_NOT ENC_SYM(SYM_BITWISE_NOT)
559 #define ENC_SYM_CUSTOM_DESTRUCT ENC_SYM(SYM_CUSTOM_DESTRUCT)
560 #define ENC_SYM_TYPE_OF ENC_SYM(SYM_TYPE_OF)
561 #define ENC_SYM_LIST_LENGTH ENC_SYM(SYM_LIST_LENGTH)
562 #define ENC_SYM_RANGE ENC_SYM(SYM_RANGE)
563 #define ENC_SYM_REG_EVENT_HANDLER ENC_SYM(SYM_REG_EVENT_HANDLER)
564 #define ENC_SYM_TAKE ENC_SYM(SYM_TAKE)
565 #define ENC_SYM_DROP ENC_SYM(SYM_DROP)
566 #define ENC_SYM_MKARRAY ENC_SYM(SYM_MKARRAY)
567 #define ENC_SYM_ARRAY_TO_LIST ENC_SYM(SYM_ARRAY_TO_LIST)
568 #define ENC_SYM_LIST_TO_ARRAY ENC_SYM(SYM_LIST_TO_ARRAY)
569 #define ENC_SYM_DM_CREATE ENC_SYM(SYM_DM_CREATE)
570 #define ENC_SYM_DM_ALLOC ENC_SYM(SYM_DM_ALLOC)
571 #define ENC_SYM_IS_LIST ENC_SYM(SYM_IS_LIST)
572 #define ENC_SYM_IS_NUMBER ENC_SYM(SYM_IS_NUMBER)
573 
574 #endif