ugBASIC 1.18
An isomorphic BASIC language compiler for retrocomputers
Loading...
Searching...
No Matches
ugbc.h
Go to the documentation of this file.
1#ifndef __UGBASICCOMPILER__
2#define __UGBASICCOMPILER__
3
4/*****************************************************************************
5 * ugBASIC - an isomorphic BASIC language compiler for retrocomputers *
6 *****************************************************************************
7 * Copyright 2021-2026 Marco Spedaletti (asimov@mclink.it)
8 *
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
12 *
13 * http://www.apache.org/licenses/LICENSE-2.0
14 *
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 *----------------------------------------------------------------------------
21 * Concesso in licenza secondo i termini della Licenza Apache, versione 2.0
22 * (la "Licenza"); è proibito usare questo file se non in conformità alla
23 * Licenza. Una copia della Licenza è disponibile all'indirizzo:
24 *
25 * http://www.apache.org/licenses/LICENSE-2.0
26 *
27 * Se non richiesto dalla legislazione vigente o concordato per iscritto,
28 * il software distribuito nei termini della Licenza è distribuito
29 * "COSÌ COM'È", SENZA GARANZIE O CONDIZIONI DI ALCUN TIPO, esplicite o
30 * implicite. Consultare la Licenza per il testo specifico che regola le
31 * autorizzazioni e le limitazioni previste dalla medesima.
32 ****************************************************************************/
33
43
44/****************************************************************************
45 * INCLUDE SECTION
46 ****************************************************************************/
47
48#include <stdio.h>
49#include <string.h>
50#include <stdlib.h>
51#include <limits.h>
52#include <unistd.h>
53#include <math.h>
54
55#include "libs/tsx.h"
56#include "libs/tmx.h"
57#include "libs/sid_file.h"
58
59/****************************************************************************
60 * DECLARATIONS AND DEFINITIONS SECTION
61 ****************************************************************************/
62
63#define UGBASIC_VERSION "1.18"
64
65#ifdef _WIN32
66 #define PATH_SEPARATOR '\\'
67 #define PATH_SEPARATOR_AS_STRING "\\"
68#else
69 #define PATH_SEPARATOR '/'
70 #define PATH_SEPARATOR_AS_STRING "/"
71#endif
72
73#ifdef _DEBUG
74 #define TRACE0( s ) (void)printf( "trace: %s\n", s );
75 #define TRACE1( s, p1 ) { \
76 char temporary[MAX_TEMPORARY_STORAGE]; \
77 (void)sprintf( temporary, s, p1 ); \
78 TRACE0( temporary ); \
79 }
80 #define TRACE2( s, p1, p2 ) { \
81 char temporary[MAX_TEMPORARY_STORAGE]; \
82 (void)sprintf( temporary, s, p1, p2 ); \
83 TRACE0( temporary ); \
84 }
85#else
86 #define TRACE0( s ) (void) s;
87 #define TRACE1( s, p1 ) (void) s; (void) p1;
88 #define TRACE2( s, p1, p2 ) (void) s; (void) p1; (void) p2;
89#endif
90
94typedef enum _Dialect {
95
97
98 DI_TSB = 1,
99
101
103
107typedef enum _Compression {
108
110
112
114
116
120typedef enum _BankType {
121
124
127
130
133
136
139
141
145#define BANK_TYPE_COUNT 6
146
150typedef struct _Bank {
151
153 int id;
154
156 char * name;
157
160
163
165 char *filename;
166
168 int space;
169
172
175
177 char * data;
178
181
183
185 struct _Bank * next;
186
188
192typedef struct _FileStorage {
193
195 int id;
196
199
202
204 int size;
205
208
210 char * content;
211
214
216
220typedef struct _Storage {
221
223 int id;
224
226 char * name;
227
229 char * fileName;
230
233
235 struct _Storage * next;
236
238
248
255
277
284
290
291/* expanable string */
292struct _POBuffer {
293 char *str; /* actual string */
294 int len; /* string length (not counting null char) */
295 int cap; /* capacity of buffer */
296};
297
298typedef struct _POBuffer *POBuffer;
299
301 char *name; /* actual string */
305};
306
307typedef struct _POVariable POVariable;
308
315typedef enum _GammaCorrection {
316
317 /* No gamma correction applied. */
319
320 /* Gamma correction by Samuel Devulder */
322
323 /* Gamma correction by Dino Florenzi */
325
327
331typedef struct _StaticString {
332
334 int id;
335
337 char * value;
338
339 int size;
340
343
345
346typedef enum _HardwareName {
347
350
352
359
371
380
396
404
410
416
424
432typedef struct _RGBi {
433 unsigned char red;
434 unsigned char green;
435 unsigned char blue;
436 unsigned char alpha;
437 unsigned char index;
438 char description[64];
439 unsigned char hardwareIndex;
440 unsigned char used;
441 int count;
443
447typedef enum _VariableType {
448
453
458
463
466
469
472
475
478
481
484
486 // VT_MOB = 14,
487
490
493
496
499
502
505
508
511
514
517
520
523
526
528 VT_BIT = 28,
529
532
535
538
541
544
547
550
552
562
563#define MAX_TEMPORARY_STORAGE 1024
564
565#define MAX_CONSOLES 4
566#define MAX_ARRAY_DIMENSIONS 256
567#define MAX_PARAMETERS 256
568#define MAX_PALETTE 256
569#define MAX_TILESETS 256
570#define MAX_NESTED_ARRAYS 16
571#define MAX_PROCEDURES 4096
572#define MAX_RESIDENT_SHAREDS 128
573#define PROTOTHREAD_DEFAULT_COUNT 16
574#define MAX_BUFFERED_OUTPUT 16
575#define MAX_FRAMES_PER_STRIP 32
576
577#define FONT_SCHEMA_EMBEDDED 0
578#define FONT_SCHEMA_STANDARD 1
579#define FONT_SCHEMA_SEMIGRAPHIC 2
580#define FONT_SCHEMA_COMPLETE 3
581#define FONT_SCHEMA_ALPHA 4
582#define FONT_SCHEMA_ASCII 5
583#define FONT_DEFAULT_SCHEMA FONT_SCHEMA_EMBEDDED
584
585#define VT_BW_1BIT( t, v ) ( ( (t) == (v) ) ? 1 : 0 )
586#define VT_BW_8BIT( t, v ) ( ( (t) == (v) ) ? 8 : 0 )
587#define VT_BW_16BIT( t, v ) ( ( (t) == (v) ) ? 16 : 0 )
588#define VT_BW_24BIT( t, v ) ( ( (t) == (v) ) ? 24 : 0 )
589#define VT_BW_32BIT( t, v ) ( ( (t) == (v) ) ? 32 : 0 )
590#define VT_BW_40BIT( t, v ) ( ( (t) == (v) ) ? 40 : 0 )
591#define VT_BW_64BIT( t, v ) ( ( (t) == (v) ) ? 64 : 0 )
592#define VT_BW_80BIT( t, v ) ( ( (t) == (v) ) ? 80 : 0 )
593#define VT_BW_128BIT( t, v ) ( ( (t) == (v) ) ? 128 : 0 )
594
595#define VT_BITWIDTH( t ) \
596 ( VT_BW_1BIT( t, VT_BIT ) + VT_BW_8BIT( t, VT_CHAR ) + VT_BW_8BIT( t, VT_BYTE ) + VT_BW_8BIT( t, VT_SBYTE ) + VT_BW_8BIT( t, VT_COLOR ) + VT_BW_8BIT( t, VT_THREAD ) + \
597 VT_BW_16BIT( t, VT_WORD ) + VT_BW_16BIT( t, VT_SWORD ) + VT_BW_16BIT( t, VT_ADDRESS ) + VT_BW_16BIT( t, VT_POSITION ) + \
598 VT_BW_32BIT( t, VT_DWORD ) + VT_BW_32BIT( t, VT_SDWORD ) )
599
600#define VT_POW2_2( t, v ) ( ( (t) == (v) ) ? 2 : 0 )
601#define VT_POW2_3( t, v ) ( ( (t) == (v) ) ? 3 : 0 )
602#define VT_POW2_4( t, v ) ( ( (t) == (v) ) ? 4 : 0 )
603
604#define VT_OPTIMAL_SHIFT( s ) ( (s<=2)?(log2(s)):(log2(s)+1) )
605
606#define VT_MAX_BITWIDTH_TYPE( a, b ) \
607 ( \
608 ( ( a == VT_FLOAT ) || ( b == VT_FLOAT ) ) ? \
609 ( VT_FLOAT ) : \
610 ( ( a == VT_NUMBER ) || ( b == VT_NUMBER ) ) ? \
611 ( VT_NUMBER ) : \
612 ( VT_BITWIDTH( a ) > VT_BITWIDTH( b ) ) ? ( a ) : ( b ) \
613 )
614
615#define VT_MAX_FLOAT_BITWIDTH_TYPE( a, b ) \
616 ( ( VT_FLOAT_BITWIDTH( a ) > VT_FLOAT_BITWIDTH( b ) ) ? ( a ) : ( b ) )
617
618#define VT_SIGNED( t ) \
619 ( ( (t) == VT_SBYTE ) || ( (t) == VT_SWORD ) || ( (t) == VT_SDWORD ) || ( (t) == VT_POSITION ) || ( (t) == VT_FLOAT ) || ( (t) == VT_NUMBER ) )
620
621#define VT_UNSIGN( t ) \
622 ( VT_SIGNED( t ) ? \
623 ( \
624 ( ( (t) == (VT_SBYTE) ) ? VT_BYTE : 0 ) + \
625 ( ( (t) == (VT_SWORD) ) ? VT_WORD : 0 ) + \
626 ( ( (t) == (VT_SDWORD) ) ? VT_DWORD : 0 ) + \
627 ( ( (t) == (VT_POSITION) ) ? VT_WORD : 0 ) + \
628 ( ( (t) == (VT_FLOAT) ) ? VT_FLOAT : 0 ) + \
629 ( ( (t) == (VT_NUMBER) ) ? VT_NUMBER : 0 ) \
630 ) \
631 : t )
632
633#define VT_SIGN( t ) \
634 ( ( ! VT_SIGNED( t ) ) ? \
635 ( \
636 ( ( (t) == (VT_BIT) ) ? VT_BIT : 0 ) + \
637 ( ( (t) == (VT_BYTE) ) ? VT_SBYTE : 0 ) + \
638 ( ( (t) == (VT_WORD) ) ? VT_SWORD : 0 ) + \
639 ( ( (t) == (VT_DWORD) ) ? VT_SDWORD : 0 ) + \
640 ( ( (t) == (VT_FLOAT) ) ? VT_FLOAT : 0 ) + \
641 ( ( (t) == (VT_POSITION) ) ? VT_POSITION : 0 ) + \
642 ( ( (t) == (VT_ADDRESS) ) ? VT_ADDRESS : 0 ) + \
643 ( ( (t) == (VT_COLOR) ) ? VT_COLOR : 0 ) \
644 ) \
645 : t )
646
647#define VT_SIGN_8BIT( v ) ( v < 0 ? ( ((~(unsigned char)(abs(v)))+1 ) ) : (v) )
648#define VT_SIGN_16BIT( v ) ( v < 0 ? ( ((~(unsigned short)(abs(v)))+1 ) ) : (v) )
649#define VT_SIGN_32BIT( v ) ( v < 0 ? ( (~((unsigned int) (abs(v)))+1 ) ) : (v) )
650
651#define VT_ESIGN_8BIT( t, v ) ( VT_SIGNED(t) ? VT_SIGN_8BIT(v) : (v) )
652#define VT_ESIGN_16BIT( t, v ) ( VT_SIGNED(t) ? VT_SIGN_16BIT(v) : (v) )
653#define VT_ESIGN_32BIT( t, v ) ( VT_SIGNED(t) ? VT_SIGN_32BIT(v) : (v) )
654
655#define VT_USIGN_8BIT( v ) (char)( ( v & 0x80 ) ? -( ((~((unsigned char)v)))+1 ) : (v) )
656#define VT_USIGN_16BIT( v ) (short)( ( v & 0x8000 ) ? -( ((~((unsigned short)v)))+1 ) : (v) )
657#define VT_USIGN_32BIT( v ) (int)( ( v & 0x80000000 ) ? -( ((~((unsigned int)v)))+1 ) : (v) )
658
659#define VT_UNSIGN_8BIT( t, v ) ( VT_SIGNED(t) ? VT_USIGN_8BIT(v) : (v) )
660#define VT_UNSIGN_16BIT( t, v ) ( VT_SIGNED(t) ? VT_USIGN_16BIT(v) : (v) )
661#define VT_UNSIGN_32BIT( t, v ) ( VT_SIGNED(t) ? VT_USIGN_32BIT(v) : (v) )
662
663#define VT_VALUE( v, t, d ) ( ( v == t ) ? d : 0 )
664
665#define VT_MIN( t ) ( \
666 VT_VALUE( t, VT_BYTE, 0x00 ) + \
667 VT_VALUE( t, VT_SBYTE, 0x80 ) + \
668 VT_VALUE( t, VT_WORD, 0x0000 ) + \
669 VT_VALUE( t, VT_SWORD, 0x8000 ) + \
670 VT_VALUE( t, VT_DWORD, 0x00000000 ) + \
671 VT_VALUE( t, VT_DWORD, 0x80000000 ) \
672 )
673
674#define VT_MAX( t ) ( \
675 VT_VALUE( t, VT_BYTE, 0xff ) + \
676 VT_VALUE( t, VT_SBYTE, 0x7f ) + \
677 VT_VALUE( t, VT_WORD, 0xffff ) + \
678 VT_VALUE( t, VT_SWORD, 0x7fff ) + \
679 VT_VALUE( t, VT_DWORD, 0xffffffff ) + \
680 VT_VALUE( t, VT_DWORD, 0x7fffffff ) \
681 )
682
683#define VT_DIRECT_ASSIGN( t ) ( \
684 ( t == VT_BUFFER ) + \
685 ( t == VT_IMAGE ) + \
686 ( t == VT_IMAGES ) + \
687 ( t == VT_TILESET ) + \
688 ( t == VT_SEQUENCE ) + \
689 ( t == VT_MUSIC ) + \
690 ( t == VT_TILEMAP ) + \
691 ( t == VT_DOJOKA ) + \
692 ( t == VT_TYPE ) \
693 )
694
698#define VARIABLE_TYPE_COUNT 26
699
708typedef enum _MemoryAreaType {
709
715
721
727
729
730typedef struct _MemoryArea {
731
732 int id;
733
737 int start;
738
743
747 int end;
748
752 int size;
753
758
761
763
764#define MEMORY_AREA_DEFINE( _type, _start, _end ) \
765 { \
766 MemoryArea * memoryArea = malloc( sizeof( MemoryArea ) ); \
767 memset( memoryArea, 0, sizeof( MemoryArea ) ) ; \
768 memoryArea->id = UNIQUE_ID; \
769 memoryArea->start = _start; \
770 memoryArea->current = _start; \
771 memoryArea->end = _end; \
772 memoryArea->size = (_end-_start); \
773 memoryArea->type = _type; \
774 memoryArea->next = NULL; \
775 MemoryArea * last = _environment->memoryAreas; \
776 if ( last ) { \
777 while( last->next ) { \
778 last = last->next; \
779 } \
780 last->next = memoryArea; \
781 } else { \
782 _environment->memoryAreas = memoryArea; \
783 } \
784 }
785
786typedef enum _ConstantType {
787
788 CT_INTEGER = 0, // integer
789 CT_STRING = 1, // string
790 CT_FLOAT = 2 // float
791
793
797typedef struct _Constant {
798
800 char * name;
801
803 char * realName;
804
806
811
815 int value;
816
821
826
828
829 char * relative;
830
832 struct _Constant * next;
833
835
839typedef struct _Label {
840
842 char * name;
843
846
848 struct _Label * next;
849
851
853
854 FT_FAST = 0, // fast = 24 bit
855 FT_SINGLE = 1 // single = 32 bit
856
858
859typedef enum _FloatTypeAngle {
860
861 FT_RADIAN = 0, // radiants
862 FT_DEGREE = 1 // degrees
863
865
872
886
887typedef struct _Offsetting {
888
892 int size;
893
897 int count;
898
903
906
908
922
943
962
963typedef struct _Strip {
964
965 int id;
967 int count;
968
969 struct _Strip * next;
970
972
976typedef struct _Variable {
977
979 char * name;
980
982 char * realName;
983
986
989
992
997
1002 int used;
1003
1010
1015
1021
1026
1031
1037
1042
1047
1052
1057
1061 unsigned char * valueBuffer;
1062
1068
1072 unsigned char * reflected;
1073
1077 int size;
1078
1083
1088
1093
1098
1103
1108
1113
1118
1123
1126
1129
1132
1135
1138
1140
1143
1146
1149
1152
1155
1157
1159
1161
1163
1165
1167
1170
1173
1176
1179
1182
1185
1187
1190
1196
1202
1207
1212
1214
1216
1221
1222 struct _Type * typeType;
1223
1225 struct _Variable * next;
1226
1228
1229typedef struct _Field {
1230
1231 char * name;
1232
1234
1236
1237 struct _Field * next;
1238
1240
1241typedef struct _Type {
1242
1243 char * name;
1244
1245 int size;
1246
1247 struct _Field * first;
1248
1249 struct _Type * next;
1250
1252
1330
1351
1355#define CONDITIONAL_TYPE_COUNT 5
1356
1360typedef struct _Conditional {
1361
1364
1366 char *label;
1367
1370
1373
1376
1379
1381
1385typedef enum _LoopType {
1388
1391
1394
1397
1400
1403
1406
1408
1412#define LOOP_TYPE_COUNT 1
1413
1455
1456typedef struct _Pattern {
1457
1458 char * pattern;
1459
1461 struct _Pattern * next;
1462
1464
1478
1479typedef struct _LoadedFile {
1480
1481 char * fileName;
1482
1484
1487
1489
1490typedef struct _ScreenMode {
1491
1492 int id;
1493
1495
1497
1499
1501
1503
1505
1507
1509
1511
1513
1515
1516#define SCREEN_MODE_DEFINE( _id, _bitmap, _width, _height, _colors, _tile_width, _tile_height, _description ) \
1517 { \
1518 ScreenMode * screenMode = malloc( sizeof( ScreenMode ) ); \
1519 memset( screenMode, 0, sizeof( screenMode ) ) ; \
1520 screenMode->bitmap = _bitmap; \
1521 screenMode->id = _id; \
1522 screenMode->width = _width; \
1523 screenMode->height = _height; \
1524 screenMode->colors = _colors; \
1525 screenMode->tileWidth = _tile_width; \
1526 screenMode->tileHeight = _tile_height; \
1527 screenMode->score = 0; \
1528 screenMode->description = strdup( _description ); \
1529 screenMode->next = NULL; \
1530 ScreenMode * last = _environment->screenModes; \
1531 if ( last ) { \
1532 while( last->next ) { \
1533 last = last->next; \
1534 } \
1535 last->next = screenMode; \
1536 } else { \
1537 _environment->screenModes = screenMode; \
1538 } \
1539 }
1540
1541typedef struct _Embedded {
1542
1718
1720
1721typedef struct _Deployed {
1722
1723 int vbl;
1728 int sqr;
1729 int back;
1730 int vars;
1788 int plot;
1803 int cls;
1825 int font;
1841
1842 int draw;
1843 int bar;
1850 int fade;
1851
1853
1855
1869
1893
1920
1921 int duff;
1922
1924 int irq;
1930
1932
1936 int bank;
1937 int msc1;
1946 int pen;
1951 int dojo;
1964
1966
1967typedef struct _DString {
1968
1971
1973
1974typedef struct _ProtothreadConfig {
1975
1977
1979
1980typedef struct _KeyboardConfig {
1981
1983 int size;
1985 char rate;
1988 char delay;
1989 char sync;
1990
1992
2001
2002typedef struct _VestigialConfig {
2003
2009
2010 /* retrocompatible hacks */
2011
2012 // If 1 we are compiling "ACME" game with
2013 // a recent version of the compiler.
2014
2016
2017 // If 1 we are compiling "5 Tides at the Purple Oyster Beach" game with
2018 // a recent version of the compiler.
2019
2021
2022 // If 1 we are compiling "Beyond the Door" game with
2023 // a recent version of the compiler.
2024
2026
2027 // If 1 we are compiling "Cocon" game with a recent
2028 // version of the compiler, that use the disruptive
2029 // optimization rule to reduce executable size.
2030 // Moreover, arrays "til", "sts", "bkg", "win" and
2031 // "ugb" will be defined as BYTE, to reduce to half
2032 // the memory occupation.
2033
2035
2036 // If 1 we are compiling "Pick the star" game with
2037 // a recent version of the compiler, that use a
2038 // different convention on return value for joystick
2039 // related commands (signed vs unsigned).
2040
2042
2043 // If 1 we are compiling "4 gravity" game with
2044 // a recent version of the compiler.
2045
2046 char rchack_4gravity_1163; // up to 1.16.3
2047 char rchack_4gravity_1164; // up to 1.16.4
2048
2049 // If 1 we are compiling "falling balls" game with
2050 // a recent version of the compiler.
2051
2053
2054 // If 1 we are compiling "Creepy Carrots" game with
2055 // a recent version of the compiler.
2056
2058
2060
2061typedef struct _FontConfig {
2062
2065
2067
2073
2080
2090
2104
2115
2130
2138
2139typedef struct _TileData {
2140
2141 char data[8];
2142
2144
2156
2157typedef int (*RgbConverterFunction)(int, int, int);
2158
2159extern int yycolno;
2160extern int yyposno;
2161
2172
2184
2201
2202typedef struct _Console {
2203
2204 int id;
2205 int x1;
2206 int y1;
2207 int x2;
2208 int y2;
2211
2213
2214typedef struct _Program {
2215
2216 char * name;
2218
2220
2240
2249
2250typedef struct _CopperList {
2251
2252 char * name;
2253 int mode;
2256
2258
2259typedef struct _NumberConfig {
2260
2263
2265
2269typedef struct _Environment {
2270
2271 // TODO: implement DEF FN
2272
2273 /* --------------------------------------------------------------------- */
2274 /* INPUT PARAMETERS */
2275 /* --------------------------------------------------------------------- */
2276
2281
2286
2291
2296
2301
2306
2311
2316
2321
2326
2331
2336
2341
2346
2351
2356
2361
2366
2371
2376
2381
2386
2391
2396
2401
2406
2411
2416
2421
2426
2431
2436
2438
2443
2448
2453
2454 /*
2455 * Variables must be explicitly defined?
2456 */
2458
2459 /*
2460 * Progam ends with a return to the operating system?
2461 */
2463
2464 /*
2465 * Graphical operation has to be clipped?
2466 */
2468
2469 /*
2470 * Read operation has to be safe?
2471 */
2473
2475
2479
2480 char * blitAND;
2481 char * blitOR;
2482 char * blitNOT;
2483
2484 /* --------------------------------------------------------------------- */
2485 /* INTERNAL STRUCTURES */
2486 /* --------------------------------------------------------------------- */
2487
2492
2497
2503
2509
2515
2517
2518 // /**
2519 // * Largest variable used as transient memory area.
2520 // */
2521 // Variable * storageTransientMemoryArea;
2522
2527
2532
2537
2539
2541
2546
2551
2552 /*
2553 * List of stored labels
2554 */
2556
2558
2560
2562
2564
2569
2574
2579
2584
2586
2591
2596
2602
2607
2612
2617
2622
2627
2632
2637
2642
2647
2653
2655
2660
2665
2670
2671 // /**
2672 // * "Every" status
2673 // */
2674 // Variable * everyStatus;
2675
2676 // /**
2677 // * "Every" counter
2678 // */
2679 // Variable * everyCounter;
2680
2681 // /**
2682 // * "Every" timing
2683 // */
2684 // Variable * everyTiming;
2685
2690
2692
2697
2702
2707
2712
2714
2719
2724
2729
2734
2739
2744
2749
2754
2759
2764
2769
2771
2776
2781
2786
2791
2796
2801
2806
2811
2816
2821
2826
2831
2836
2841
2846
2851
2856
2861
2866
2871
2876
2881
2886
2891
2896
2901
2906
2907 /*
2908 * Active console.
2909 */
2911
2912 /*
2913 * Set of consoles.
2914 * Additional for internal usage of ugBASIC
2915 */
2917
2922
2926
2928
2933
2938
2940
2945
2950
2952
2957
2962
2964
2969
2971
2976
2981
2986
2991
2996
2997 /*
2998 * Gamma correction to be used.
2999 */
3001
3002 /*
3003 * List of available banks
3004 */
3006
3007 /*
3008 * Max size of a single block allocated
3009 */
3011
3012 /*
3013 * Number of assembly lines produced until now.
3014 */
3016
3017 /*
3018 * Number of assembly lines produced until the previous step.
3019 */
3021
3022 /*
3023 * Current source line analyzed by peephole optimizer.
3024 */
3026
3027 /*
3028 * Number of assembly lines removed for currentSourceLine.
3029 */
3031
3032 /*
3033 * Number of bytes produced for currentSourceLine
3034 */
3036
3037 /*
3038 * Origin is used
3039 */
3041
3042 /*
3043 * Origin's abscissa
3044 */
3046
3047 /*
3048 * Origin's ordinate
3049 */
3051
3052 /*
3053 * Origin axis ordinate
3054 */
3056
3057 /*
3058 * Resolution's used
3059 */
3061
3062 /*
3063 * Resolution's abscissa
3064 */
3066
3067 /*
3068 * Resolution's ordinate
3069 */
3071
3072 /*
3073 * slice image starting X
3074 */
3076
3077 /*
3078 * slice image starting y
3079 */
3081
3083
3085
3087
3089
3090 /*
3091 * Used for deferred writing of assembly file.
3092 */
3094
3096
3098
3100
3107
3108 /*
3109 * Starting address of frame buffer
3110 */
3112
3113 /*
3114 * Starting address of auxiliary frame buffer
3115 */
3117
3119
3121
3126
3131
3136
3141
3146
3151
3156
3161
3163
3168
3170
3172
3174
3176
3178
3180
3182
3184
3186
3188
3191
3193
3195
3198
3201
3204
3206
3208
3210
3212
3216
3218
3220
3222
3224
3227
3230
3233
3236
3239
3241
3243
3246
3248
3251
3252 char * travelX;
3253 char * travelXF;
3255 char * travelY;
3256 char * travelYF;
3258
3261
3266
3268
3270
3272
3277
3279
3281
3283
3284 char * flashVars[128];
3286
3288
3291
3293
3295
3297
3299
3301
3302 /* --------------------------------------------------------------------- */
3303 /* OUTPUT PARAMETERS */
3304 /* --------------------------------------------------------------------- */
3305
3309 FILE * asmFile;
3310
3315
3320
3325
3331
3336
3341
3346
3348
3349#define UNIQUE_ID ((struct _Environment *)_environment)->uniqueId++
3350#define UNIQUE_RESOURCE_ID ((struct _Environment *)_environment)->uniqueResourceId++
3351#define MAKE_LABEL char label[32]; sprintf( label, "_label%d", UNIQUE_ID);
3352
3353int yyerror ( Environment * _ignored, const char * _message );
3354
3355#if defined(_DEBUG)
3356 #define CRITICAL( s ) { \
3357 char errorMessage[MAX_TEMPORARY_STORAGE*10]; \
3358 sprintf(errorMessage, "%s FILE: %s LINE: %d", s, __FILE__, __LINE__ ); \
3359 target_cleanup( ((struct _Environment *)_environment) ); \
3360 yyerror ( NULL, errorMessage ); \
3361 }
3362 #define CRITICAL2( s, v ) { \
3363 char errorMessage[MAX_TEMPORARY_STORAGE*10]; \
3364 sprintf(errorMessage, "%s (%s) FILE: %s LINE: %d", s, v, __FILE__, __LINE__ ); \
3365 target_cleanup( ((struct _Environment *)_environment) ); \
3366 yyerror ( NULL, errorMessage ); \
3367 }
3368 #define CRITICAL2i( s, v ) { \
3369 char errorMessage[MAX_TEMPORARY_STORAGE*10]; \
3370 sprintf(errorMessage, "%s (%d) FILE: %s LINE: %d", s, v, __FILE__, __LINE__ ); \
3371 target_cleanup( ((struct _Environment *)_environment) ); \
3372 yyerror ( NULL, errorMessage ); \
3373 }
3374 #define CRITICAL3( s, v1, v2 ) { \
3375 char errorMessage[MAX_TEMPORARY_STORAGE*10]; \
3376 sprintf(errorMessage, "%s (%s, %s) FILE: %s LINE: %d", s, v1, v2, __FILE__, __LINE__ ); \
3377 target_cleanup( ((struct _Environment *)_environment) ); \
3378 yyerror ( NULL, errorMessage ); \
3379 }
3380 #define CRITICAL3i( s, v1, v2 ) { \
3381 char errorMessage[MAX_TEMPORARY_STORAGE*10]; \
3382 sprintf(errorMessage, "%s (%s, %d) FILE: %s LINE: %d", s, v1, v2, __FILE__, __LINE__ ); \
3383 target_cleanup( ((struct _Environment *)_environment) ); \
3384 yyerror ( NULL, errorMessage ); \
3385 }
3386 #define CRITICAL3ii( s, v1, v2 ) { \
3387 char errorMessage[MAX_TEMPORARY_STORAGE*10]; \
3388 sprintf(errorMessage, "%s (%d, %d) FILE: %s LINE: %d", s, v1, v2, __FILE__, __LINE__ ); \
3389 target_cleanup( ((struct _Environment *)_environment) ); \
3390 yyerror ( NULL, errorMessage ); \
3391 }
3392 #define CRITICAL4si( s, v, d1, d2 ) { \
3393 char errorMessage[MAX_TEMPORARY_STORAGE*10]; \
3394 sprintf(errorMessage, "%s (%s, %d, %d) FILE: %s LINE: %d", s, v, d1, d2, __FILE__, __LINE__ ); \
3395 target_cleanup( ((struct _Environment *)_environment) ); \
3396 yyerror ( NULL, errorMessage ); \
3397 }
3398#else
3399 #define CRITICAL( s ) { \
3400 char errorMessage[MAX_TEMPORARY_STORAGE*10]; \
3401 sprintf(errorMessage, "%s", s ); \
3402 target_cleanup( ((struct _Environment *)_environment) ); \
3403 yyerror ( NULL, errorMessage ); \
3404 }
3405 #define CRITICAL2( s, v ) { \
3406 char errorMessage[MAX_TEMPORARY_STORAGE*10]; \
3407 sprintf(errorMessage, "%s (%s)", s, v ); \
3408 target_cleanup( ((struct _Environment *)_environment) ); \
3409 yyerror ( NULL, errorMessage ); \
3410 }
3411 #define CRITICAL2i( s, v ) { \
3412 char errorMessage[MAX_TEMPORARY_STORAGE*10]; \
3413 sprintf(errorMessage, "%s (%d)", s, v ); \
3414 target_cleanup( ((struct _Environment *)_environment) ); \
3415 yyerror ( NULL, errorMessage ); \
3416 }
3417 #define CRITICAL3( s, v1, v2 ) { \
3418 char errorMessage[MAX_TEMPORARY_STORAGE*10]; \
3419 sprintf(errorMessage, "%s (%s, %s)", s, v1, v2 ); \
3420 target_cleanup( ((struct _Environment *)_environment) ); \
3421 yyerror ( NULL, errorMessage ); \
3422 }
3423 #define CRITICAL3i( s, v1, v2 ) { \
3424 char errorMessage[MAX_TEMPORARY_STORAGE*10]; \
3425 sprintf(errorMessage, "%s (%s, %d)", s, v1, v2 ); \
3426 target_cleanup( ((struct _Environment *)_environment) ); \
3427 yyerror ( NULL, errorMessage ); \
3428 }
3429 #define CRITICAL3ii( s, v1, v2 ) { \
3430 char errorMessage[MAX_TEMPORARY_STORAGE*10]; \
3431 sprintf(errorMessage, "%s (%d, %d)", s, v1, v2 ); \
3432 target_cleanup( ((struct _Environment *)_environment) ); \
3433 yyerror ( NULL, errorMessage ); \
3434 }
3435 #define CRITICAL4si( s, v, d1, d2 ) { \
3436 char errorMessage[MAX_TEMPORARY_STORAGE*10]; \
3437 sprintf(errorMessage, "%s (%s, %d, %d)", s, v, d1, d2 ); \
3438 target_cleanup( ((struct _Environment *)_environment) ); \
3439 yyerror ( NULL, errorMessage ); \
3440 }
3441#endif
3442
3443#define CRITICAL_INTERNAL_ERROR( v ) CRITICAL2("E000 - Internal error", v );
3444#define CRITICAL_UNIMPLEMENTED( v ) CRITICAL2("E000 - Internal method not implemented:", v );
3445#define CRITICAL_TEMPORARY2( v ) CRITICAL2("E001 - Unable to create space for temporary variable", v );
3446#define CRITICAL_VARIABLE( v ) CRITICAL2("E002 - Using of an undefined variable", v );
3447#define CRITICAL_DATATYPE_UNSUPPORTED( k, v ) CRITICAL3("E003 - Datatype not supported for keyword", k, v );
3448#define CRITICAL_CANNOT_CAST( t1, t2 ) CRITICAL3("E004 - Cannot cast types", t1, t2 );
3449#define CRITICAL_STORE_UNSUPPORTED( t ) CRITICAL2("E005 - Datatype cannot be stored directly", t );
3450#define CRITICAL_RESIZE_UNSUPPORTED( t ) CRITICAL2("E006 - Datatype cannot be resized directly", t );
3451#define CRITICAL_MOVE_NAKED_UNSUPPORTED( t ) CRITICAL2("E007 - Datatype cannot be copied directly", t );
3452#define CRITICAL_BUFFER_SIZE_MISMATCH( v1, v2 ) CRITICAL3("E008 - Buffer sizes mismatch -- cannot be copied", v1, v2 );
3453#define CRITICAL_DATATYPE_MISMATCH( v1, v2 ) CRITICAL3("E009 - Datatype mismatch", v1, v2 );
3454#define CRITICAL_ADD_UNSUPPORTED( v, t ) CRITICAL3("E010 - Add unsupported for variable of given datatype", v, t );
3455#define CRITICAL_SUB_UNSUPPORTED( v, t ) CRITICAL3("E011 - Sub unsupported for variable of given datatype", v, t );
3456#define CRITICAL_COMPLEMENT_UNSUPPORTED( v, t ) CRITICAL3("E012 - Complement unsupported for variable of given datatype", v, t );
3457#define CRITICAL_MUL_UNSUPPORTED( v, t ) CRITICAL3("E013 - Multiplication unsupported for variable of given datatype", v, t );
3458#define CRITICAL_DIV_UNSUPPORTED( v, t ) CRITICAL3("E014 - Division unsupported for variable of given datatype", v, t );
3459#define CRITICAL_CANNOT_COMPARE( t1, t2 ) CRITICAL3("E015 - Cannot compare types", t1, t2 );
3460#define CRITICAL_MUL2_UNSUPPORTED( v, t ) CRITICAL3("E016 - Double unsupported for variable of given datatype", v, t );
3461#define CRITICAL_DIV2_UNSUPPORTED( v, t ) CRITICAL3("E017 - Division by 2 unsupported for variable of given datatype", v, t );
3462#define CRITICAL_AND_UNSUPPORTED( v, t ) CRITICAL3("E018 - Bitwise AND unsupported for variable of given datatype", v, t );
3463#define CRITICAL_LEFT_UNSUPPORTED( v, t ) CRITICAL3("E019 - LEFT unsupported for variable of given datatype", v, t );
3464#define CRITICAL_RIGHT_UNSUPPORTED( v, t ) CRITICAL3("E020 - RIGHT unsupported for variable of given datatype", v, t );
3465#define CRITICAL_MID_UNSUPPORTED( v, t ) CRITICAL3("E021 - MID unsupported for variable of given datatype", v, t );
3466#define CRITICAL_INSTR_UNSUPPORTED( v, t ) CRITICAL3("E022 - INSTR unsupported for variable of given datatype", v, t );
3467#define CRITICAL_STRING_UNSUPPORTED( v, t ) CRITICAL3("E023 - STRING unsupported for variable of given datatype", v, t );
3468#define CRITICAL_UPPER_UNSUPPORTED( v, t ) CRITICAL3("E024 - UPPER unsupported for variable of given datatype", v, t );
3469#define CRITICAL_LOWER_UNSUPPORTED( v, t ) CRITICAL3("E025 - LOWER unsupported for variable of given datatype", v, t );
3470#define CRITICAL_STR_UNSUPPORTED( v, t ) CRITICAL3("E026 - STR unsupported for variable of given datatype", v, t );
3471#define CRITICAL_VAL_UNSUPPORTED( v, t ) CRITICAL3("E027 - VAL unsupported for variable of given datatype", v, t );
3472#define CRITICAL_CHR_UNSUPPORTED( v, t ) CRITICAL3("E028 - CHR unsupported for variable of given datatype", v, t );
3473#define CRITICAL_ASC_UNSUPPORTED( v, t ) CRITICAL3("E029 - ASC unsupported for variable of given datatype", v, t );
3474#define CRITICAL_LEN_UNSUPPORTED( v, t ) CRITICAL3("E030 - LEN unsupported for variable of given datatype", v, t );
3475#define CRITICAL_POW_UNSUPPORTED( v, t ) CRITICAL3("E031 - ^ unsupported for variable of given datatype", v, t );
3476#define CRITICAL_SGN_UNSUPPORTED( v, t ) CRITICAL3("E032 - SGN unsupported for variable of given datatype", v, t );
3477#define CRITICAL_ABS_UNSUPPORTED( v, t ) CRITICAL3("E033 - ABS unsupported for variable of given datatype", v, t );
3478#define CRITICAL_DEBUG_UNSUPPORTED( v, t ) CRITICAL3("E034 - DEBUG unsupported for variable of given datatype", v, t );
3479#define CRITICAL_ARRAY_SIZE_MISMATCH( v, d1, d2 ) CRITICAL4si("E035 - number of indexes different from array dimensions", v, d1, d2 );
3480#define CRITICAL_NOT_ARRAY( v ) CRITICAL2("E036 - accessing with indexes on a non array variable", v );
3481#define CRITICAL_PROCEDURE_NESTED_UNSUPPORTED( n ) CRITICAL2("E037 - cannot define a nested procedure (a procedure inside a procedure)", n );
3482#define CRITICAL_PROCEDURE_NOT_OPENED() CRITICAL("E038 - END PROC outside a procedure" );
3483#define CRITICAL_PROCEDURE_MISSING( n ) CRITICAL2("E039 - call to an undefined procedure", n );
3484#define CRITICAL_PROCEDURE_PARAMETERS_MISMATCH( n, d1, d2 ) CRITICAL4si("E040 - wrong number of parameters on procedure call", n, d1, d2 );
3485#define CRITICAL_SHARED_ONLY_IN_PROCEDURES() CRITICAL("E041 - SHARED can be used only inside a PROCEDURE");
3486#define CRITICAL_GLOBAL_ONLY_OUTSIDE_PROCEDURES() CRITICAL("E042 - GLOBAL can be used only outside a PROCEDURE");
3487#define CRITICAL_PRINT_UNSUPPORTED(v, t) CRITICAL3("E043 - PRINT unsupported for variable of given datatype", v, t );
3488#define CRITICAL_NOT_SUPPORTED( v ) CRITICAL2("E044 - Command / Keyword not supported:", v );
3489#define CRITICAL_BIT_UNSUPPORTED( v, t ) CRITICAL3("E045 - BIT unsupported for variable of given datatype", v, t );
3490#define CRITICAL_INPUT_UNSUPPORTED( v, t ) CRITICAL3("E046 - INPUT unsupported for variable of given datatype", v, t );
3491#define CRITICAL_MOVE_UNSUPPORTED( t ) CRITICAL2("E047 - Datatype cannot be copied", t );
3492#define CRITICAL_SCREEN_MODE_BITMAP_UNSUPPORTED( t ) CRITICAL2("E048 - Screen mode unsupported for BITMAP mode", t );
3493#define CRITICAL_SCREEN_MODE_TILEMAP_UNSUPPORTED( t ) CRITICAL2("E049 - Screen mode unsupported for TILEMAP mode", t );
3494#define CRITICAL_RANDOM_UNSUPPORTED(v, t) CRITICAL3("E050 - RANDOM unsupported for variable of given datatype", v, t );
3495#define CRITICAL_MOD_UNSUPPORTED(v, t) CRITICAL3("E051 - MOD unsupported for variable of given datatype", v, t );
3496#define CRITICAL_SCREEN_UNSUPPORTED(v) CRITICAL2i("E052 - SCREEN mode unsupported", v );
3497#define CRITICAL_LOAD_MISSING_FILE(f) CRITICAL2("E053 - LOAD missing file", f );
3498#define CRITICAL_LOAD_FILE_TOO_LONG(f) CRITICAL2("E054 - LOAD file too long (>255 bytes)", f );
3499#define CRITICAL_CANNOT_CAST_BUFFER_STRING_SIZE(a,b) CRITICAL3("E055 - Cannot cast BUFFER to STRING: buffer too long (>255 bytes)", a, b );
3500#define CRITICAL_IMAGE_LOAD_MISSING_FILE(f) CRITICAL2("E056 - LOAD IMAGE missing file", f );
3501#define CRITICAL_IMAGE_LOAD_UNKNOWN_FORMAT(f) CRITICAL2("E057 - LOAD IMAGE file format unknown", f );
3502#define CRITICAL_IMAGE_CONVERTER_TOO_COLORS(f) CRITICAL2i("E059 - IMAGE converter unsupported -- too much colors", f );
3503#define CRITICAL_SQR_UNSUPPORTED( v, t ) CRITICAL3("E060 - SQR unsupported for variable of given datatype", v, t );
3504#define CRITICAL_UNDEFINED_CONSTANT( c ) CRITICAL2("E061 - use of an undefined constant", c );
3505#define CRITICAL_TYPE_MISMATCH_CONSTANT_NUMERIC( c ) CRITICAL2("E062 - use of an wrong type constant (numeric expected, string used)", c );
3506#define CRITICAL_IMAGE_CONVERTER_INVALID_WIDTH( w, m ) CRITICAL3ii("E063 - invalid width for image, must be a multiple of modulo pixels", w, m );
3507#define CRITICAL_IMAGE_CONVERTER_INVALID_HEIGHT( h, m ) CRITICAL3ii("E064 - invalid height for image, must be a multiple of modulo pixels", h, m );
3508#define CRITICAL_BIN_UNSUPPORTED( v, t ) CRITICAL3("E065 - BIN unsupported for variable of given datatype", v, t );
3509#define CRITICAL_MUL2_INVALID_STEPS( v ) CRITICAL2("E066 - invalid steps for multiplication by 2", v );
3510#define CRITICAL_UNABLE_TO_EMBED( v ) CRITICAL2("E067 - unable to embed library, only inline available", v );
3511#define CRITICAL_UNABLE_TO_INLINE( v ) CRITICAL2("E068 - unable to inline call, only library available", v );
3512#define CRITICAL_NOT_IMAGE( v ) CRITICAL2("E069 - variable is not an image", v );
3513#define CRITICAL_NOT_ASSIGNED_IMAGE( v ) CRITICAL2("E070 - variable is not an loaded image, please use assign operator", v );
3514#define CRITICAL_NEGATIVE_CONSTANT( v, a ) CRITICAL3i("E071 - negative constant is not allowed", v, a);
3515#define CRITICAL_TOO_LITTLE_CONSTANT( v ) CRITICAL2("E072 - constant value under the minimum limit", v);
3516#define CRITICAL_TOO_BIG_CONSTANT( v ) CRITICAL2("E073 - constant value over the maximum limit", v);
3517#define CRITICAL_INVALID_STRING_COUNT( d ) CRITICAL2i("E074 - invalid maximum number of strings", d);
3518#define CRITICAL_INVALID_STRING_SPACE( d ) CRITICAL2i("E075 - invalid maximum space occupied by strings", d);
3519#define CRITICAL_TYPE_MISMATCH_CONSTANT_STRING( c ) CRITICAL2("E076 - use of an wrong type constant (string expected, numeric used)", c );
3520#define CRITICAL_CANNOT_OPEN_EXECUTABLE_FILE( c ) CRITICAL2("E077 - cannot open executable file for post elaboration", c );
3521#define CRITICAL_PARALLEL_PROCEDURE_CANNOT_BE_CALLED( c ) CRITICAL2("E078 - cannot CALL a PARALLEL PROCEDURE: use SPAWN instead", c );
3522#define CRITICAL_PROCEDURE_CANNOT_BE_INVOKED( c ) CRITICAL2("E078 - cannot SPAWN a PROCEDURE: use CALL instead", c );
3523#define CRITICAL_LOCAL_VARIABLE_OUTSIDE_PROCEDURE( c ) CRITICAL2("E079 - cannot define LOCAL vars outside PARALLEL PROCEDURE", c );
3524#define CRITICAL_OR_UNSUPPORTED( v, t ) CRITICAL3("E080 - Bitwise OR unsupported for variable of given datatype", v, t );
3525#define CRITICAL_NOT_UNSUPPORTED( v, t ) CRITICAL3("E081 - Bitwise NOT unsupported for variable of given datatype", v, t );
3526#define CRITICAL_IMAGE_CONVERTER_INVALID_FRAME_WIDTH( w, m ) CRITICAL3ii("E082 - invalid width for framed image, must be multiple of modulo pixels", w, m );
3527#define CRITICAL_IMAGE_CONVERTER_INVALID_FRAME_HEIGHT( h, m ) CRITICAL3ii("E083 - invalid height for framed image, must be multiple of modulo pixels", h, m );
3528#define CRITICAL_IMAGE_CONVERTER_INVALID_OFFSET_X( x ) CRITICAL2i("E084 - invalid offset x for image, must be >= 0 and < width", x );
3529#define CRITICAL_IMAGE_CONVERTER_INVALID_OFFSET_Y( y ) CRITICAL2i("E085 - invalid offset y for image, must be >= 0 and < height", y );
3530#define CRITICAL_IMAGES_LOAD_INVALID_FRAME_WIDTH( w ) CRITICAL2i("E086 - invalid frame width, not multiple of width", w );
3531#define CRITICAL_IMAGES_LOAD_INVALID_FRAME_HEIGHT( h ) CRITICAL2i("E087 - invalid frame height, not multiple of height", h );
3532#define CRITICAL_PUT_IMAGE_UNSUPPORTED( v, t ) CRITICAL3("E088 - PUT IMAGE unsupported for given datatype", v, t );
3533#define CRITICAL_NOT_IMAGES( v ) CRITICAL2("E089 - variable is not an collection of images", v );
3534#define CRITICAL_NOT_ASSIGNED_IMAGES( v ) CRITICAL2("E090 - variable is not a loaded collection of images, please use assign operator", v );
3535#define CRITICAL_NOT_STRING_ARRAY( v ) CRITICAL2("E091 - accessing as a string array on a non string array", v );
3536#define CRITICAL_SIZE_UNSUPPORTED( v, t ) CRITICAL3("E092 - SIZE unsupported for variable of given datatype", v, t );
3537#define CRITICAL_UNSUPPORTED_OUTPUT_FILE_TYPE( t ) CRITICAL2("E093 - output file type format unsupported for this type of executable", t );
3538#define CRITICAL_BUFFER_SIZE_MISMATCH_ARRAY_SIZE( v, d1, d2 ) CRITICAL4si("E094 - size of buffer mismatch the size of array", v, d1, d2 );
3539#define CRITICAL_CANNOT_ASSIGN_TO_ARRAY( v, t ) CRITICAL3("E095 - cannot assign this type to array", v, t );
3540#define CRITICAL_NEW_IMAGE_UNSUPPORTED_MODE(f) CRITICAL2i("E096 - NEW IMAGE unsupported for the given screen mode", f );
3541#define CRITICAL_GET_IMAGE_UNSUPPORTED( v, t ) CRITICAL3("E097 - GET IMAGE unsupported for given datatype", v, t );
3542#define CRITICAL_INVALID_DIVISOR2( d ) CRITICAL2i("E098 - invalid divisor for DIVISION2, must be power of two", d );
3543#define CRITICAL_INVALID_MULTIPLICATOR2( d ) CRITICAL2i("E099 - invalid multiplicator for MULTIPLICATOR2, must be power of two", d );
3544#define CRITICAL_INVALID_TASK_COUNT( d ) CRITICAL2i("E100 - invalid number of tasks for multitasking", d);
3545#define CRITICAL_CANNOT_COMPARE_WITH_CASE( d ) CRITICAL2("E101 - cannot compare with case", d);
3546#define CRITICAL_ADD_INPLACE_UNSUPPORTED( v, t ) CRITICAL3("E102 - Add in place unsupported for variable of given datatype", v, t );
3547#define CRITICAL_SUB_INPLACE_UNSUPPORTED( v, t ) CRITICAL3("E103 - Sub in place unsupported for variable of given datatype", v, t );
3548#define CRITICAL_HEX_UNSUPPORTED( v, t ) CRITICAL3("E104 - HEX unsupported for variable of given datatype", v, t );
3549#define CRITICAL_PRINT_BUFFER_ON_A_NOT_BUFFER( v ) CRITICAL2("E105 - PRINT BUFFER not allowed for non buffer variables", v );
3550#define CRITICAL_10_LINE_RULES_ENFORCED( v ) CRITICAL2("E106 - this command is not allowed on sources for 10 liner contest", v );
3551#define CRITICAL_INVALID_INPUT_SEPARATOR( d ) CRITICAL2i("E107 - invalid character used for INPUT separator", d);
3552#define CRITICAL_INVALID_INPUT_SIZE( d ) CRITICAL2i("E108 - invalid size for INPUT temporary buffer", d);
3553#define CRITICAL_INVALID_INPUT_CURSOR( d ) CRITICAL2i("E109 - invalid cursor character for INPUT", d);
3554#define CRITICAL_CANNOT_CALCULATE_SPRITE_WIDTH( ) CRITICAL("E110 - cannot calculate SPRITE WIDTH statically" );
3555#define CRITICAL_CANNOT_CALCULATE_SPRITE_HEIGHT( ) CRITICAL("E111 - cannot calculate SPRITE HEIGHT statically" );
3556#define CRITICAL_CANNOT_ALLOCATE_MORE_TILE( ) CRITICAL("E112 - cannot allocate one more tile on tileset" );
3557#define CRITICAL_TILE_LOAD_MISSING_FILE(f) CRITICAL2("E113 - LOAD TILE missing file", f );
3558#define CRITICAL_TILE_LOAD_UNKNOWN_FORMAT(f) CRITICAL2("E114 - LOAD TILE file format unknown", f );
3559#define CRITICAL_TILE_INVALID_WIDTH( w ) CRITICAL2i("E115 - invalid width for tile, must be 8 pixels", w );
3560#define CRITICAL_TILE_INVALID_HEIGHT( h ) CRITICAL2i("E116 - invalid height for tile, must be 8 pixels", h );
3561#define CRITICAL_TILE_LOAD_ON_NON_TILESET( t ) CRITICAL2("E117 - loading tile(s) on non tileset", t );
3562#define CRITICAL_USE_TILESET_ON_NON_TILESET( t ) CRITICAL2("E118 - using a non tileset", t );
3563#define CRITICAL_CANNOT_MOVE_UNROLLED_TILE( t ) CRITICAL2("E119 - cannot move an unrolled tile", t );
3564#define CRITICAL_NOT_TILE( v ) CRITICAL2("E120 - variable is not a (set of) tile(s)", v );
3565#define CRITICAL_CANNOT_RESPAWN_NOT_THREADID( v ) CRITICAL2("E121 - cannot respawn something that is not a thread id", v );
3566#define CRITICAL_CANNOT_MMOVE_INVALID_SIZE( v ) CRITICAL2("E122 - invalid data type for SIZE on MMOVE", v );
3567#define CRITICAL_CANNOT_MMOVE_UNSUPPORTED( ) CRITICAL("E123 - MMOVE VIDEO to VIDEO unsupported" );
3568#define CRITICAL_EXPANSION_OUT_OF_MEMORY_LOADING( v ) CRITICAL2("E124 - out of memory when loading BANKED resource", v );
3569#define CRITICAL_NOT_ASSIGNED_SEQUENCE( v ) CRITICAL2("E125 - variable is not a set of loaded collection of images, please use assign operator", v );
3570#define CRITICAL_SEQUENCE_LOAD_INVALID_FRAME_WIDTH( w ) CRITICAL2i("E126 - invalid frame width, not multiple of width", w );
3571#define CRITICAL_SEQUENCE_LOAD_INVALID_FRAME_HEIGHT( h ) CRITICAL2i("E127 - invalid frame height, not multiple of height", h );
3572#define CRITICAL_CANNOT_MUSIC( v ) CRITICAL2("E128 - variable is not MUSIC, so cannot music it", v );
3573#define CRITICAL_FILENAME_INVALID_COLON( v ) CRITICAL2("E129 - invalid filename, colon character not allowed", v );
3574#define CRITICAL_FILENAME_INVALID_BACKSLASH( v ) CRITICAL2("E130 - invalid filename, backslash character not allowed", v );
3575#define CRITICAL_CANNOT_KILL_NOT_THREADID( v ) CRITICAL2("E131 - cannot KILL something that is not a thread id", v );
3576#define CRITICAL_STORAGE_NESTED_UNSUPPORTED( n ) CRITICAL2("E132 - cannot define a nested storage (a storage inside a storage)", n );
3577#define CRITICAL_STORAGE_NOT_OPENED() CRITICAL("E133 - ENDSTORAGE outside a storage definition" );
3578#define CRITICAL_DLOAD_MISSING_FILE(f) CRITICAL2("E134 - DLOAD missing file", f );
3579#define CRITICAL_INCLUDE_FILE_NOT_FOUND(f) CRITICAL2("E135 - INCLUDE missing file", f );
3580#define CRITICAL_XOR_UNSUPPORTED( v, t ) CRITICAL3("E136 - Bitwise XOR unsupported for variable of given datatype", v, t );
3581#define CRITICAL_SWAP_DIFFERENT_BITWIDTH( v ) CRITICAL2("E137 - Bitwise SWAP supported only for variable of same bitwidth", v );
3582#define CRITICAL_CANNOT_REMOVE_FILE(f,n) CRITICAL3("E138 - cannot remove file", f, n );
3583#define CRITICAL_CONSTANT_ALREADY_DEFINED_AS_VARIABLE(f) CRITICAL2("E139 - cannot define a variable with the same name of a constant", f );
3584#define CRITICAL_VARIABLE_ALREADY_DEFINED_AS_CONSTANT(f) CRITICAL2("E140 - cannot define a constant with the same name of a variable", f );
3585#define CRITICAL_END_GAMELOOP_WITHOUT_GAMELOOP() CRITICAL("E141 - END GAMELOOP without BEGIN GAMELOOP" );
3586#define CRITICAL_EVERY_OFF_WITHOUT_EVERY() CRITICAL("E142 - EVERY OFF without EVERY definition" );
3587#define CRITICAL_WEND_WITHOUT_WHILE() CRITICAL("E143 - WEND without WHILE" );
3588#define CRITICAL_EXIT_WITHOUT_LOOP() CRITICAL("E144 - EXIT without LOOP" );
3589#define CRITICAL_EXIT_WITHOUT_ENOUGH_LOOP() CRITICAL("E145 - EXIT without enough LOOPs" );
3590#define CRITICAL_ENDSELECT_WITHOUT_SELECT() CRITICAL("E146 - ENDSELECT without SELECT" );
3591#define CRITICAL_UNTIL_WITHOUT_REPEAT() CRITICAL("E147 - UNTIL without REPEAT" );
3592#define CRITICAL_LOOP_WITHOUT_DO() CRITICAL("E148 - LOOP without DO" );
3593#define CRITICAL_ENDIF_WITHOUT_IF() CRITICAL("E149 - ENDIF without IF" );
3594#define CRITICAL_NEXT_WITHOUT_FOR() CRITICAL("E150 - NEXT without FOR" );
3595#define CRITICAL_ELSE_WITHOUT_IF() CRITICAL("E151 - ELSE without IF" );
3596#define CRITICAL_CASE_WITHOUT_SELECT_CASE() CRITICAL("E152 - CASE without SELECT CASE" );
3597#define CRITICAL_CASE_ELSE_WITHOUT_SELECT_CASE() CRITICAL("E153 - CASE ELSE without SELECT CASE" );
3598#define CRITICAL_VARIABLE_REDEFINED_DIFFERENT_TYPE( f ) CRITICAL2("E154 - variable redefined with a different type", f );
3599#define CRITICAL_VARIABLE_IMPORTED_DIFFERENT_TYPE( f ) CRITICAL2("E155 - variable imported with a different type", f );
3600#define CRITICAL_CONSTANT_REDEFINED_DIFFERENT_TYPE( f ) CRITICAL2("E156 - constant redefined with a different type", f );
3601#define CRITICAL_CONSTANT_REDEFINED_DIFFERENT_VALUE( f ) CRITICAL2("E157 - constant redefined with a different value", f );
3602#define CRITICAL_VARIABLE_UNDEFINED(f) CRITICAL2("E158 - undefined variable (OPTION EXPLICIT ON)", f );
3603#define CRITICAL_VARIABLE_ALREADY_DEFINED(f) CRITICAL2("E159 - variable already defined", f );
3604#define CRITICAL_MACRO_TOO_MUCH_PARAMETERS(m, p) CRITICAL3("E160 - too much parameters in macro", m, p );
3605#define CRITICAL_MACRO_TOO_MUCH_LINES(m) CRITICAL2("E160 - too much lines in macro", m );
3606#define CRITICAL_MACRO_TOO_MUCH_VALUES(m,v) CRITICAL3("E161 - too much values in macro", m, v );
3607#define CRITICAL_MACRO_MISMATCH_PARAMETER_VALUES(m) CRITICAL2("E162 - mismatch number of values and parameters", m );
3608#define CRITICAL_MACRO_UNDEFINED(m) CRITICAL2("E163 - macro undefined", m );
3609#define CRITICAL_BLIT_IMAGE_UNSUPPORTED( v, t ) CRITICAL3("E164 - BLIT IMAGE unsupported for given datatype", v, t );
3610#define CRITICAL_BLIT_ALLOC_REGISTER_EXHAUSTED( ) CRITICAL("E165 - CPU registers exhausted in BLIT definition" );
3611#define CRITICAL_BLIT_ALLOC_MEMORY_EXHAUSTED( ) CRITICAL("E166 - CPU memory exhausted in BLIT definition" );
3612#define CRITICAL_BLIT_INVALID_FREE_REGISTER( s, r ) CRITICAL3i("E167 - invalid free CPU register free in BLIT definition", s, r );
3613#define CRITICAL_BLIT_TOO_MUCH_SOURCES( ) CRITICAL("E168 - too much sources on BLIT IMAGE for this target" );
3614#define CRITICAL_BLIT_CANNOT_MIX_IMAGE_TYPES( n ) CRITICAL2("E169 - cannot mix image types with BLIT IMAGE", n );
3615#define CRITICAL_BLIT_ALREADY_DEFINED( n ) CRITICAL2("E170 - BLIT with same name already defined", n );
3616#define CRITICAL_BLIT_CANNOT_BLIT( n ) CRITICAL2("E171 - BLIT IMAGE with something that is not a blit", n );
3617#define CRITICAL_ARRAY_DEFINITION_FILE_NOT_FOUND( n ) CRITICAL2("E172 - file not found for initialize array", n );
3618#define CRITICAL_ARRAY_MISSING_SIZE( n ) CRITICAL2("E173 - missing size on one or more dimensions", n );
3619#define CRITICAL_ARRAY_MULTIDIMENSIONAL( n ) CRITICAL2("E174 - simple UBOUND/LBOUND cannot be used on multidimensional array", n );
3620#define CRITICAL_ARRAY_DATATYPE_NOT_SUPPORTED( n ) CRITICAL2("E175 - datatype not supported for array loading from binary file", n );
3621#define CRITICAL_CANNOT_CAST_FLOAT_PRECISION( v1, v2 ) CRITICAL3("E0176 - Cannot cast types since float precision mismatch", v1, v2 );
3622#define CRITICAL_SWAP_UNSUPPORTED( v, t ) CRITICAL3("E177 - Swap unsupported for variable of given datatype", v, t );
3623#define CRITICAL_CANNOT_EMIT_FLOAT_CONST( v ) CRITICAL2("E178 - cannot emit floating point constants", v );
3624#define CRITICAL_UNKNOWN_CPU_REGISTER( ) CRITICAL("E179 - unknown register");
3625#define CRITICAL_UNSETTABLE_CPU_REGISTER( v ) CRITICAL2("E180 - CPU register cannot be used", v );
3626#define CRITICAL_UNKNOWN_CPU_STACK( v ) CRITICAL2("E181 - unknown stack size", v );
3627#define CRITICAL_DECLARE_PROC_NESTED_UNSUPPORTED( v ) CRITICAL2("E182 - cannot nest DECLARE PROC/FUNCTION inside a PROC", v );
3628#define CRITICAL_INVALID_INPUT_RATE( v ) CRITICAL2i("E183 - invalid value for INPUT/KEYBOARD RATE", v );
3629#define CRITICAL_INVALID_INPUT_DELAY( v ) CRITICAL2i("E184 - invalid value for INPUT/KEYBOARD DELAY", v );
3630#define CRITICAL_ARRAY_ASSIGN_DATATYPE_NOT_SUPPORTED( v ) CRITICAL2("E185 - cannot instantiate an array of this kind with direct assignment", v );
3631#define CRITICAL_TILESET_LOAD_UNKNOWN_FORMAT( v ) CRITICAL2("E186 - unknown tileset format", v );
3632#define CRITICAL_TILESET_LOAD_MISSING_IMAGE( v ) CRITICAL2("E187 - missing image from tileset", v );
3633#define CRITICAL_RESOURCE_LOAD_MISSING_FILE(f) CRITICAL2("E188 - missing file in loading resource", f );
3634#define CRITICAL_PUT_IMAGE_NAMED_TILE_MISSING_TILESET( v ) CRITICAL2("E189 - missing tileset from images", v );
3635#define CRITICAL_PUT_IMAGE_NAMED_TILE_MISSING_TILES_FROM_TILESET( v ) CRITICAL2("E190 - missing tiles' definition on tileset", v );
3636#define CRITICAL_PUT_IMAGE_NAMED_TILE_NOT_FOUND( v ) CRITICAL2("E191 - tile not found in tileset", v );
3637#define CRITICAL_PUT_IMAGE_NAMED_TILE_INVALID_PROBABILITY( v ) CRITICAL2("E192 - invalid probability for tile selection", v );
3638#define CRITICAL_TILEMAP_LOAD_UNKNOWN_FORMAT( v ) CRITICAL2("E193 - unknown tilemap format", v );
3639#define CRITICAL_TILEMAP_LOAD_MISSING_LAYER( v ) CRITICAL2("E194 - missing layer from tilemap", v );
3640#define CRITICAL_TILEMAP_LOAD_MISSING_TILESET( v ) CRITICAL2("E195 - missing tileset from tilemap", v );
3641#define CRITICAL_TILEMAP_LOAD_ONLY_ONE_TILESET( v ) CRITICAL2("E196 - only one tileset is supported for each tilemap", v );
3642#define CRITICAL_CANNOT_PUT_TILEMAP_FOR_NON_TILEMAP( v ) CRITICAL2("E197 - cannot PUT TILEMAP without a tile map", v );
3643#define CRITICAL_CANNOT_CAST_TILEMAP_SIZE( v ) CRITICAL2("E198 - cannot cast TILEMAP since sizes are different", v );
3644#define CRITICAL_TILEMAP_LOAD_ONLY_ONE_LAYER( v ) CRITICAL2("E199 - only one layer is supported for each tilemap", v );
3645#define CRITICAL_TILE_CLASS_NO_TILESET( v ) CRITICAL2("E200 - cannot call TILE CLASS on something that is not a TILESET", v );
3646#define CRITICAL_TILE_CLASS_INVALID_ID( v ) CRITICAL2i("E201 - invalid tile id on TILE CLASS", v );
3647#define CRITICAL_TILE_WIDTH_NO_TILESET( v ) CRITICAL2("E202 - cannot call TILE WIDTH on something that is not a TILESET", v );
3648#define CRITICAL_TILE_HEIGHT_NO_TILESET( v ) CRITICAL2("E203 - cannot call TILE HEIGHT on something that is not a TILESET", v );
3649#define CRITICAL_TILE_PROBABILITY_NO_TILESET( v ) CRITICAL2("E204 - cannot call TILE PROBABILITY on something that is not a TILESET", v );
3650#define CRITICAL_TILE_PROBABILITY_INVALID_ID( v ) CRITICAL2i("E205 - invalid tile id on TILE PROBABILITY", v );
3651#define CRITICAL_TILEMAP_WIDTH_NO_TILEMAP( v ) CRITICAL2("E206 - cannot call TILEMAP WIDTH on something that is not a TILEMAP", v );
3652#define CRITICAL_TILEMAP_HEIGHT_NO_TILEMAP( v ) CRITICAL2("E207 - cannot call TILEMAP HEIGHT on something that is not a TILEMAP", v );
3653#define CRITICAL_TILEMAP_LOAD_ONLY_SAME_SIZE_LAYER( v ) CRITICAL2("E208 - cannot use tile maps with layers of different size", v );
3654#define CRITICAL_TILESET_OF_INVALID_TILEMAP( v ) CRITICAL2("E209 - cannot use TILESET OF on something that is not a TILEMAP", v );
3655#define CRITICAL_TILEMAP_INDEX_INVALID_TILEMAP( v ) CRITICAL2("E210 - cannot use TILEMAP INDEX on something that is not a TILEMAP", v );
3656#define CRITICAL_SLICE_IMAGE_UNSUPPORTED( v, t ) CRITICAL3("E211 - SLICE IMAGE unsupported for given datatype", v, t );
3657#define CRITICAL_SLICE_IMAGE_UNSUPPORTED_COMBINATION( ) CRITICAL("E212 - SLICE IMAGE cannot optimize the call in this combination" );
3658#define CRITICAL_IMAGE_EXTRACT_ON_NOT_IMAGES( v ) CRITICAL2("E213 - calling IMAGE on something that is not IMAGES / SEQUENCE", v );
3659#define CRITICAL_TILE_ID_ON_NOT_TILESET( v ) CRITICAL2("E214 - using TILE ID on something that is not a TILESET", v );
3660#define CRITICAL_TILE_ID_MISSING_ORIGINAL_TILESET( v ) CRITICAL2("E215 - missing Tiled informations", v );
3661#define CRITICAL_IMAGES_LOAD_INVALID_AUTO_WITHOUT_GIF( v ) CRITICAL2("E216 - cannot use implicit FRAME SIZE without an animated GIF", v );
3662#define CRITICAL_IMAGES_LOAD_IMAGE_TOO_BIG( v ) CRITICAL2("E217 - IMAGES cannot be loaded since is too big", v );
3663#define CRITICAL_SEQUENCE_LOAD_IMAGE_TOO_BIG( v ) CRITICAL2("E218 - SEQUENCE cannot be loaded since is too big", v );
3664#define CRITICAL_TILES_LOAD_IMAGE_TOO_BIG( v ) CRITICAL2("E218 - TILES cannot be loaded since is too big", v );
3665#define CRITICAL_TILESET_LOAD_IMAGE_TOO_BIG( v ) CRITICAL2("E219 - TILESET cannot be loaded since is too big", v );
3666#define CRITICAL_IF_WITHOUT_ENDIF( ) CRITICAL("E220 - IF without ENDIF" );
3667#define CRITICAL_SELECT_CASE_WITHOUT_ENDSELECT( ) CRITICAL("E221 - SELECT CASE without ENDSELECT" );
3668#define CRITICAL_DO_WITHOUT_LOOP( ) CRITICAL("E222 - DO without LOOP" );
3669#define CRITICAL_WHILE_WITHOUT_WEND( ) CRITICAL("E223 - WHILE without WEND" );
3670#define CRITICAL_REPEAT_WITHOUT_UNTIL( ) CRITICAL("E224 - REPEAT without UNTIL" );
3671#define CRITICAL_FOR_WITHOUT_NEXT( ) CRITICAL("E225 - FOR without NEXT" );
3672#define CRITICAL_BEGIN_GAMELOOP_WITHOUT_END_GAMELOOP( ) CRITICAL("E226 - BEGIN GAMELOOP without END GAMELOOP" );
3673#define CRITICAL_CANNOT_GENERATE_RANDOM( ) CRITICAL("E227 - cannot generate random number with this parameter" );
3674#define CRITICAL_LINE_NUMBER_ALREADY_DEFINED( n ) CRITICAL2i("E228 - line number already defined", n );
3675#define CRITICAL_LABEL_ALREADY_DEFINED( n ) CRITICAL2("E229 - label already defined", n );
3676#define CRITICAL_TILE_ID_NO_TILESET( v ) CRITICAL2("E230 - cannot call TILE ID on something that is not a TILESET", v );
3677#define CRITICAL_READ_WITHOUT_DATA( v ) CRITICAL("E231 - READ without DATA" );
3678#define CRITICAL_READ_DATA_TYPE_NOT_SUPPORTED( v, t ) CRITICAL3("E232 - READ not supported for this kind of variable", v, t );
3679#define CRITICAL_RESTORE_WITHOUT_DATA( v ) CRITICAL2("E233 - RESTORE without DATA", v );
3680#define CRITICAL_READ_END_WITHOUT_DATA( ) CRITICAL("E234 - READ END without DATA" );
3681#define CRITICAL_DATA_LOAD_TEXT_NOT_FOUND( v ) CRITICAL2("E235 - cannot find file to load DATA in", v );
3682#define CRITICAL_CANNOT_COMPARE_CONST( t ) CRITICAL2("E236 - Cannot compare type with a constant", t );
3683#define CRITICAL_CANNOT_USE_DRAW_WITHOUT_STRING( t ) CRITICAL2("E237 - DRAW need a string with drawing commands", t );
3684#define CRITICAL_PUT_NOT_NOT_SUPPORTED( t ) CRITICAL2("E238 - PUT with NOT operator is not supported", t );
3685#define CRITICAL_CANNOT_USE_PLAY_WITHOUT_STRING( t ) CRITICAL2("E239 - PLAY need a string with playing commands", t );
3686#define CRITICAL_RESTORE_WITH_UNSUPPORTED_DATA_TYPE( t ) CRITICAL2("E240 - RESTORE with unsupported data type", t );
3687#define CRITICAL_SANDBOX_ENFORCED( v ) CRITICAL2("E241 - this command is not allowed on sources for sandbox execution", v );
3688#define CRITICAL_NEW_IMAGES_UNSUPPORTED_MODE(f) CRITICAL2i("E242 - NEW IMAGES unsupported for the given screen mode", f );
3689#define CRITICAL_MIDI_OUT_OF_MEMORY(f) CRITICAL2("E243 - out of memory on MIDI conversion using LOAD MUSIC", f );
3690#define CRITICAL_STRPTR_NOT_STRING(v, t) CRITICAL3("E244 - cannot use STRPTR on something that is not a string", v, t );
3691#define CRITICAL_DLOAD_MISSING_ADDRESS(v) CRITICAL2("E245 - destination address for DLOAD is missing", v );
3692#define CRITICAL_DLOAD_MISSING_SIZE(v) CRITICAL2("E246 - size for DLOAD is missing", v );
3693#define CRITICAL_STORAGE_NOT_AVAILABLE() CRITICAL("E247 - the BEGIN STORAGE keyword is not available with this z88dk release" );
3694#define CRITICAL_CANNOT_STORE_FILE_ON_VARIABLE_OF_DIFFERENT_TYPE(v) CRITICAL("E248 - cannot store file on different type variable" );
3695#define CRITICAL_MISSING_FILE_STORAGE(v) CRITICAL("E249 - missing file storage" );
3696#define CRITICAL_DSAVE_MISSING_ADDRESS(v) CRITICAL2("E250 - source address for DSAVE is missing", v );
3697#define CRITICAL_DSAVE_MISSING_SIZE(v) CRITICAL2("E251 - size for DSAVE is missing", v );
3698#define CRITICAL_VARIABLE_CANNOT_DIRECT_ASSIGN_DIFFERENT_TYPE( t1, t2 ) CRITICAL3("E252 - cannot direct assign between different types", t1, t2 );
3699#define CRITICAL_WRONG_NEXT_INDEX(v) CRITICAL2("E253 - NEXT with a wrong FOR index", v );
3700#define CRITICAL_PUT_IMAGE_UNINITIALIZED(v) CRITICAL2("E254 - PUT IMAGE with uninitialized image variable", v );
3701#define CRITICAL_MULTITASKING_ALREADY_FORBIDDEN() CRITICAL("E255 - multitasking is already forbidden");
3702#define CRITICAL_MULTITASKING_NOT_FORBIDDEN() CRITICAL("E256 - multitasking is already allowed");
3703#define CRITICAL_MULTITASKING_FORBIDDEN() CRITICAL("E257 - multitasking is actually forbidden");
3704#define CRITICAL_INVALID_PAINT_BUFFER(v) CRITICAL2i("E258 - invalid PAINT BUFFER size", v );
3705#define CRITICAL_TILEMAP_SOURCE_MISSING(v) CRITICAL2("E259 - invalid tilemap, missing source", v );
3706#define CRITICAL_IMAGES_LOAD_IMAGE_BUFFER_TOO_BIG() CRITICAL("E260 - image too big from buffer" );
3707#define CRITICAL_PROCEDURE_DUPLICATE_PARAMETER(p,v) CRITICAL3("E261 - duplicate parameter on procedure", p, v );
3708#define CRITICAL_CANNOT_KILL_NOT_ARRAY_THREADS(v) CRITICAL2("E262 - cannot KILL elements of something that is not an array of threads", p, v );
3709#define CRITICAL_UNSUPPORTED_BANK_NUMBER(v) CRITICAL2i("E263 - bank number not available", v );
3710#define CRITICAL_OUT_OF_BANKS( ) CRITICAL("E264 - out of bank detected");
3711#define CRITICAL_CANNOT_COPY_TO_BANKED(v) CRITICAL2("E265 - cannot copy something on BANKed variables", v );
3712#define CRITICAL_INVALID_RAM_SIZE(r) CRITICAL2i("E266 - invalid ram size (-R)", r );
3713#define CRITICAL_ARRAY_MONODIMENSIONAL(v) CRITICAL2("E267 - dimension > 0 for one dimensional array in UBOUND/LBOUND", v );
3714#define CRITICAL_ARRAY_INVALID_DIMENSION(v) CRITICAL2("E268 - invalid dimension for UBOUND/LBOUND", v );
3715#define CRITICAL_CANNOT_USE_MULTITASKED_ARRAY(v) CRITICAL2("E269 - cannot use [ ] operator outside a PARALLEL PROCEDURE", v );
3716#define CRITICAL_STORAGE_BANKED_UNCOMPATIBLE_TILEMAP(v) CRITICAL2("E270 - cannot use TILEMAP both on (implicit) BANKED and STORAGE", v );
3717#define CRITICAL_STORAGE_BANKED_UNCOMPATIBLE(v) CRITICAL2("E271 - cannot use variables both on (implicit) BANKED and STORAGE", v );
3718#define CRITICAL_CANNOT_STORE_BIT_ON_BANKED_ARRAY(v) CRITICAL2("E272 - cannot store a bit into a BANKED array", v );
3719#define CRITICAL_CANNOT_MOVE_BIT_ON_BANKED_ARRAY(v) CRITICAL2("E273 - cannot move a bit into a BANKED array", v );
3720#define CRITICAL_CANNOT_MOVE_STRING_ON_BANKED_ARRAY(v) CRITICAL2("E274 - cannot move string into a BANKED array", v );
3721#define CRITICAL_CANNOT_MOVE_FROM_BIT_ON_BANKED_ARRAY(v) CRITICAL2("E275 - cannot move bit from a BANKED array", v );
3722#define CRITICAL_STORAGE_BANKED_OUT_OF_MEMORY(v) CRITICAL2("E276 - out of memory when storing this variable on bank", v );
3723#define CRITICAL_FLIP_IMAGE_UNSUPPORTED(v,t) CRITICAL3("E277 - unsupported type for FLIP IMAGE", v, t );
3724#define CRITICAL_CANNOT_FLIP_BANKED_IMAGE(v) CRITICAL2("E278 - cannot FLIP BANKED IMAGE", v );
3725#define CRITICAL_CANNOT_FLIP_COMPRESSED_IMAGE(v) CRITICAL2("E279 - cannot FLIP COMPRESSED IMAGE(S)", v );
3726#define CRITICAL_CANNOT_CAST_FLOAT_32BIT_UNSIGNED(v) CRITICAL2("E280 - cannot convert UNSIGNED DWORD to FLOAT", v );
3727#define CRITICAL_BOOM_NOT_ASYNC() CRITICAL("E281 - cannot BOOM in asyncronous mode on this target" );
3728#define CRITICAL_SHOOT_NOT_ASYNC() CRITICAL("E282 - cannot SHOOT in asyncronous mode on this target" );
3729#define CRITICAL_BELL_NOT_ASYNC() CRITICAL("E283 - cannot BELL in asyncronous mode on this target" );
3730#define CRITICAL_AUDIO_TARGET_UNAVAILABLE() CRITICAL("E284 - AUDIO SOURCE unavailable for this target" );
3731#define CRITICAL_CANNOT_MUSIC_ON_AUDIO_DEVICE(v) CRITICAL2("E285 - cannot MUSIC on the given AUDIO TARGET", v );
3732#define CRITICAL_MUSIC_NOT_ASYNC() CRITICAL("E283 - cannot MUSIC in asyncronous mode on this target" );
3733#define CRITICAL_CANNOT_USE_STRINGS_LONGER_256_CHARS( ) CRITICAL("E284 - string too long (>256 characters)" );
3734#define CRITICAL_MISSING_LABEL_NAMED(v) CRITICAL2("E285 - missing label", v );
3735#define CRITICAL_MISSING_LABEL_NUMBER(v) CRITICAL2i("E286 - missing line number", v );
3736#define CRITICAL_TEXTMAP_ADDRESS_NOT_VALID(a) CRITICAL2i("E287 - textmap address not valid", a );
3737#define CRITICAL_IMAGES_LOAD_INVALID_ORIGIN_WITH_GIF(f) CRITICAL2("E288 - cannot use ORIGIN with GIF images", f );
3738#define CRITICAL_IMAGES_LOAD_INVALID_OFFSET_WITH_GIF(f) CRITICAL2("E289 - cannot use OFFSET with GIF images", f );
3739#define CRITICAL_CANNOT_MIX_SPRITES_MSPRITES() CRITICAL("E290 - cannot mix (C)SPRITE with MSPRITE" );
3740#define CRITICAL_CASE_ELSE_ALREADY_EMITTED() CRITICAL("E291 - CASE ELSE already used" );
3741#define CRITICAL_VARIABLE_CANNOT_DIRECT_ASSIGN_WRONG_TYPE( v, t ) CRITICAL3("E292 - cannot direct assign this type", v, t );
3742#define CRITICAL_INVALID_PROGRAM_START( a ) CRITICAL2i("E293 - invalid address for DEFINE PROGRAM START", a );
3743#define CRITICAL_INVALID_JOYSTICK_RETRIES( a ) CRITICAL2i("E294 - invalid number of retries in DEFINE JOYSTICK RETRIES", a );
3744#define CRITICAL_GET_NEED_STRING( v ) CRITICAL2i("E295 - GET needs variable of string type", v );
3745#define CRITICAL_KEYGET_NEED_STRING( v ) CRITICAL2i("E296 - KEYGET needs variable of string type", v );
3746#define CRITICAL_ARRAY_DATATYPE_WRONG( v ) CRITICAL2("E297 - wrong datatype of array", v );
3747#define CRITICAL_CANNOT_SWAP_DIFFERENT_DATATYPES( v1, v2 ) CRITICAL3("E298 - cannot SWAP variables of different type", v1, v2 );
3748#define CRITICAL_AT_UNSUPPORTED( v1, v2 ) CRITICAL3("E298 - cannot AT variables of not string type", v1, v2 );
3749#define CRITICAL_INVALID_INPUT_LATENCY( v ) CRITICAL2i("E299 - invalid value for INPUT LATENCY", v );
3750#define CRITICAL_INVALID_INPUT_LATENCY_MS( v ) CRITICAL2i("E300 - invalid milliseconds for INPUT LATENCY", v );
3751#define CRITICAL_INVALID_INPUT_DELAY_MS( v ) CRITICAL2i("E301 - invalid milliseconds for INPUT DELAY", v );
3752#define CRITICAL_INVALID_INPUT_RELEASE( v ) CRITICAL2i("E302 - invalid value for INPUT RELEASE", v );
3753#define CRITICAL_INVALID_INPUT_RELEASE_MS( v ) CRITICAL2i("E303 - invalid milliseconds for INPUT RELEASE", v );
3754#define CRITICAL_END_LOOP_WITHOUT_LOOP( ) CRITICAL("E304 - END LOOP without LOOP" );
3755#define CRITICAL_IMAGEREF_ON_NON_IMAGE( v ) CRITICAL2("E304 - IMAGEREF can be used only with IMAGE / ATLAS / SEQUENCE variables", v );
3756#define CRITICAL_CANNOT_OPEN_FILE(f,n) CRITICAL3("E305 - cannot open file", f, n );
3757#define CRITICAL_CANNOT_READ_FILE(f,n) CRITICAL3("E306 - cannot read file", f, n );
3758#define CRITICAL_CANNOT_WRITE_FILE(f,n) CRITICAL3("E307 - cannot write file", f, n );
3759#define CRITICAL_XOR_INPLACE_UNSUPPORTED(v,t) CRITICAL3("E308 - cannot use inplace XOR with this datatype", v, t );
3760#define CRITICAL_PUT_IMAGE_X_UNSUPPORTED( v, t ) CRITICAL3("E309 - PUT IMAGE unsupported for given datatype for x coordinates", v, t );
3761#define CRITICAL_PUT_IMAGE_Y_UNSUPPORTED( v, t ) CRITICAL3("E310 - PUT IMAGE unsupported for given datatype for y coordinates", v, t );
3762#define CRITICAL_YIELD_CANNOT_BE_CALLED_OUTSIDE_PROCEDURE() CRITICAL("E311 - cannot call YIELD outside a PARALLEL procedure" );
3763#define CRITICAL_WAIT_PARALLEL_CANNOT_BE_CALLED_OUTSIDE_PROCEDURE() CRITICAL("E312 - cannot call WAIT PARALLEL outside a PARALLEL procedure" );
3764#define CRITICAL_WAIT_UNTIL_CANNOT_BE_CALLED_OUTSIDE_PROCEDURE() CRITICAL("E313 - cannot call WAIT UNTIL outside a PARALLEL procedure" );
3765#define CRITICAL_WAIT_WHILE_CANNOT_BE_CALLED_OUTSIDE_PROCEDURE() CRITICAL("E314 - cannot call WAIT WHILE outside a PARALLEL procedure" );
3766#define CRITICAL_WAIT_CYCLES_PARALLEL_CANNOT_BE_CALLED_OUTSIDE_PROCEDURE() CRITICAL("E315 - cannot call WAIT CYCLES PARALLEL outside a PARALLEL procedure" );
3767#define CRITICAL_MISSING_CONSTANT(v) CRITICAL2("E316 - trying to emit a constant that does not exist", v );
3768#define CRITICAL_COMPRESSION_FAILED(v) CRITICAL2("E317 - the compression algorithm failed in compressing", v );
3769#define CRITICAL_cANNOT_DEFINE_ANIMATION_INSIDE_A_PROCEDURE(n) CRITICAL2("E318 - cannot define an ANIMATION inside a PROCEDURE", n );
3770#define CRITICAL_cANNOT_DEFINE_ANIMATION_WITHOUT_ATLAS(n) CRITICAL2("E319 - cannot define an ANIMATION with something that is not an ATLAS", n );
3771#define CRITICAL_cANNOT_DEFINE_REVERSE_ANIMATION_WITH_EASING(n) CRITICAL2("E320 - cannot define a REVERSE ANIMATION with easing in/out", n );
3772#define CRITICAL_CANNOT_USE_ANIMATE_WITHOUT_ANIMATION(n) CRITICAL2("E321 - cannot use ANIMATE without ANIMATION", n );
3773#define CRITICAL_CANNOT_USE_FREEZE_WITHOUT_ANIMATION(n) CRITICAL2("E322 - cannot use FREEZE without ANIMATION", n );
3774#define CRITICAL_CANNOT_USE_UNFREEZE_WITHOUT_ANIMATION(n) CRITICAL2("E323 - cannot use UNFREEZE without ANIMATION", n );
3775#define CRITICAL_CANNOT_USE_STOP_WITHOUT_ANIMATION(n) CRITICAL2("E324 - cannot use STOP without ANIMATION", n );
3776#define CRITICAL_CANNOT_USE_NEXT_ANIMATION_WITHOUT_ANIMATION(n) CRITICAL2("E325 - cannot use NEXT ANIMATION without ANIMATION", n );
3777#define CRITICAL_CANNOT_USE_ANIMATING_WITHOUT_ANIMATION(n) CRITICAL2("E326 - cannot use ANIMATING without ANIMATION", n );
3778#define CRITICAL_CANNOT_DEFINE_MOVEMENT_INSIDE_A_PROCEDURE(n) CRITICAL2("E327 - cannot use MOVEMENT inside a PROCEDURE", n );
3779#define CRITICAL_CANNOT_DEFINE_MOVEMENT_WITHOUT_ATLAS(n) CRITICAL2("E328 - cannot use MOVEMENT without an ATLAS", n );
3780#define CRITICAL_CANNOT_USE_MOVE_WITHOUT_MOVEMENT(n) CRITICAL2("E329 - cannot use MOVE without a MOVEMENT", n );
3781#define CRITICAL_CANNOT_USE_ABSOLUTE_MOVE_WITHOUT_ABSOLUTE_MOVEMENT(n) CRITICAL2("E330 - cannot use absolute MOVE without an absolute MOVEMENT", n );
3782#define CRITICAL_CANNOT_USE_STOP_WITHOUT_MOVEMENT(n) CRITICAL2("E331 - cannot use STOP MOVEMENT without a MOVEMENT", n );
3783#define CRITICAL_CANNOT_USE_MOVING_WITHOUT_MOVEMENT(n) CRITICAL2("E332 - cannot use MOVING without a MOVEMENT", n );
3784#define CRITICAL_CANNOT_USE_MOVE_SYNC_WITHOUT_ANIMATIOn(n,m) CRITICAL3("E333 - using a not existing animation on MOVE", n, m );
3785#define CRITICAL_CANNOT_DUPLICATE_NOT_MPSRITE(n) CRITICAL2("E334 - cannot init from something that is not MSPRITE", n );
3786#define CRITICAL_CANNOT_MOVE_PLACEHOLDERS_TO_IMAGE(v) CRITICAL2("E335 - cannot move PLACEHOLDER to IMAGE", v );
3787#define CRITICAL_MID_UNSUPPORTED_FOR_STRING(s) CRITICAL2("E336 - MID assignment not supported for constant strings", s );
3788#define CRITICAL_ON_GOSUB_WITH_NOT_EXISTENT_LABEL(s) CRITICAL2("E337 - ON...GOSUB with an unexistent label", s );
3789#define CRITICAL_ON_GOSUB_WITH_NOT_EXISTENT_LINE_NUMBER(n) CRITICAL2i("E338 - ON...GOSUB with an unexistent line number", n );
3790#define CRITICAL_ON_CALL_WITH_NOT_EXISTENT_PROCEDURE(s) CRITICAL2("E339 - ON...CALL with an unexistent PROCEDURE", s );
3791#define CRITICAL_ON_GOTO_WITH_NOT_EXISTENT_LABEL(s) CRITICAL2("E340 - ON...GOTO with an unexistent label", s );
3792#define CRITICAL_ON_GOTO_WITH_NOT_EXISTENT_LINE_NUMBER(n) CRITICAL2i("E341 - ON...GOTO with an unexistent line number", n );
3793#define CRITICAL_ON_SCROLL_GOSUB_WITH_NOT_EXISTENT_LABEL(s) CRITICAL2("E342 - ON SCROLL...GOSUB with an unexistent label", s );
3794#define CRITICAL_ON_SCROLL_CALL_WITH_NOT_EXISTENT_PROCEDURE(s) CRITICAL2("E343 - ON SCROLL...CALL with an unexistent PROCEDURE", s );
3795#define CRITICAL_CANNOT_DEFINE_MOVEMENT_WITHOUT_STEPS(s) CRITICAL2("E344 - cannot use relative MOVEMENT without using a steps count", s );
3796#define CRITICAL_PAGE01() CRITICAL("E345 - PAGE can be 0 or 1" );
3797#define CRITICAL_PMODE_NEEDS_CONSTANTS() CRITICAL("E346 - PMODE needs constant values" );
3798#define CRITICAL_FILE_SIZE_ON_MISSING_FILE(f) CRITICAL2("E347 - FILE SIZE on missing file", f );
3799#define CRITICAL_MISSING_END_PROC(p) CRITICAL2("E348 - missing END PROC for PROC/PROCEDURE definition", p );
3800#define CRITICAL_NOT_ENOUGH_FRAMES_FOR_ANIMATION(n) CRITICAL2("E349 - not enought frames for animation", n );
3801#define CRITICAL_CANNOT_FILL_RANDOM(v) CRITICAL2("E350 - cannot use FILL RANDOM on this datatype", v );
3802#define CRITICAL_CANNOT_COPY_SID_FILE(f) CRITICAL2("E351 - music variables referring to sid files cannot be copied", f );
3803#define CRITICAL_CANNOT_COMPARE_SID_FILE(f) CRITICAL2("E352 - music variables referring to sid files cannot be compared", f );
3804#define CRITICAL_CANNOT_LOAD_SID_FILE_NO_SPACE() CRITICAL("E353 - not enough space to load sid file, consider relocation" );
3805#define CRITICAL_CANNOT_LOAD_MUSIC(f) CRITICAL2("E354 - cannot load MUSIC, unknown format", f );
3806#define CRITICAL_CANNOT_LOAD_MIDI_FILE(f) CRITICAL2("E355 - cannot load midi file", f );
3807#define CRITICAL_MMOB_NEEDS_SPRITE(v) CRITICAL2("E356 - MMOB can be called only with SPRITE/MSPRITE", v );
3808#define CRITICAL_IMAGE_CONVERTER_INVALID_WIDTH_EXACT( w ) CRITICAL2i("E357 - invalid width for image, must be of 8 pixels", w );
3809#define CRITICAL_IMAGE_CONVERTER_INVALID_HEIGHT_EXACT( h ) CRITICAL2i("E358 - invalid height for image, must be of 8 pixels", h );
3810#define CRITICAL_ARRAY_OUT_OF_BOUND( a ) CRITICAL2("E359 - array out of bound", a );
3811#define CRITICAL_FOR_OUTSIDE_LIMITS( v, a ) CRITICAL3i("E360 - FOR index out of data type size", v, a );
3812#define CRITICAL_SERIAL_WRITE_UNSUPPORTED( v, t ) CRITICAL3("E361 - SERIAL WRITE unsupported for variable of given datatype", v, t );
3813#define CRITICAL_SERIAL_READ_UNSUPPORTED( t ) CRITICAL2("E362 - SERIAL read unsupported for variable of given datatype", t );
3814#define CRITICAL_FUJINET_READ_UNSUPPORTED( t ) CRITICAL2("E363 - FUJINET READ read unsupported for variable of given datatype", t );
3815#define DOJO_OPEN_PORT_STRING_REQUIRED( v, t ) CRITICAL3("E364 - port name for DOJO OPEN PORT must be a string", v, t );
3816#define DOJO_PUT_MESSAGE_DOJOKA_REQUIRED( v, t ) CRITICAL3("E365 - port for PUT MESSAGE must be opened / created", v, t );
3817#define DOJO_PUT_MESSAGE_STRING_REQUIRED( v, t ) CRITICAL3("E366 - message for PUT MESSAGE must be a string", v, t );
3818#define DOJO_PEEK_MESSAGE_DOJOKA_REQUIRED( v, t ) CRITICAL3("E367 - port for PEEK MESSAGE must be opened / created", v, t );
3819#define DOJO_PUT_MESSAGE_ARRAY_TYPE_UNSUPPORTED( v, t ) CRITICAL3("E368 - type of array's elements is not supported", v, t );
3820#define DOJO_PUT_MESSAGE_ARRAY_SIZE_UNSUPPORTED( v, t ) CRITICAL3("E369 - array is too large to send as message", v, t );
3821#define DOJO_GET_MESSAGE_MISSING_VARIABLE( ) CRITICAL("E370 - missing variable for GET MESSAGE" );
3822#define DOJO_PUT_MESSAGE_MISSING_VARIABLE( ) CRITICAL("E371 - PUT MESSAGE needs a DOJOKA variable" );
3823#define CRITICAL_VECTOR_GET_X_VECTOR_NEEDED( v ) CRITICAL2("E372 - X needs a VECTOR variable", v );
3824#define CRITICAL_VECTOR_GET_Y_VECTOR_NEEDED( v ) CRITICAL2("E373 - Y needs a VECTOR variable", v );
3825#define CRITICAL_FILE_NOT_FOUND( n ) CRITICAL2("E374 - file not found", n );
3826#define CRITICAL_TYPE_NESTED_UNSUPPORTED( n ) CRITICAL2("E375 - cannot define a nested TYPE (a TYPE inside a TYPE)", n );
3827#define CRITICAL_TYPE_ALREADY_DEFINED( n ) CRITICAL2("E376 - TYPE already defined", n );
3828#define CRITICAL_TYPE_NOT_OPENED( ) CRITICAL("E377 - cannot END an unopened TYPE" );
3829#define CRITICAL_CANNOT_DEFINE_OUTSIDE_TYPE( n ) CRITICAL2("E378 - cannot define outside a TYPE", n );
3830#define CRITICAL_CANNOT_USE_DATATYPE_IN_TYPE( n ) CRITICAL2("E379 - cannot use this type inside a TYPE", n );
3831#define CRITICAL_VARIABLE_TYPE_NEEDED( n ) CRITICAL2("E380 - variable TYPE is needed", n );
3832#define CRITICAL_UNKNOWN_TYPE( n ) CRITICAL2("E381 - unknown TYPE", n );
3833#define CRITICAL_CANNOT_USE_FIELD_ON_NONTYPE( n ) CRITICAL2("E382 - cannot access to fields of a non TYPE variable", n );
3834#define CRITICAL_UNKNOWN_FIELD_ON_TYPE( n ) CRITICAL2("E383 - unknown TYPE field ", n );
3835#define CRITICAL_DATA_NOT_ENOUGH_FOR_TYPE( n ) CRITICAL2("E384 - not enough value on DATA for given TYPE ", n );
3836#define CRITICAL_FILE_CSV_NOT_ENOUGH_DATA( n ) CRITICAL2("E385 - not enough data in CSV to fillup the array ", n );
3837#define CRITICAL_UNCLOSED_EMBEDDED_ESCAPE_SEQUENCE( n ) CRITICAL2("E386 - unclosed embedded conditional", n );
3838#define CRITICAL_CANNOT_PUT_TILEMAP_FOR_TILEMAP_ON_STORAGE( n ) CRITICAL2("E387 - cannot use (yet) PUT TILEMAP on tilemap on storage", n );
3839#define CRITICAL_CANNOT_ACCESS_MULTITHREAD_ARRAY_OUTSIDE_PROCEDURE( n ) CRITICAL2("E388 - cannot use multithread array access operator outside PARALLEL PROCEDURE", n );
3840#define CRITICAL_NESTED_COPPER_LIST_NOT_ALLOWED( ) CRITICAL("E389 - cannot define nested COPPER list" );
3841#define CRITICAL_COPPER_LIST_NOT_OPENED( ) CRITICAL("E390 - COPPER list is not opened" );
3842#define CRITICAL_COPPER_LIST_ALREADY_DEFINED( ) CRITICAL("E391 - COPPER list already defined" );
3843#define CRITICAL_MOVE_WITH_NOT_ALLOWED_TYPE( t ) CRITICAL2("E392 - cannot MOVE this data type inside a COPPER list", t );
3844#define CRITICAL_STORE_WITH_NOT_ALLOWED_TYPE( t ) CRITICAL2("E393 - cannot STORE this data type inside a COPPER list", t );
3845#define CRITICAL_STORE_WITH_NOT_CONST_NOT_ALLOWED( t ) CRITICAL2("E394 - cannot STORE using not const in a COPPER list", t );
3846#define CRITICAL_COLOR_WITH_NOT_CONST_NOT_ALLOWED( t ) CRITICAL2("E395 - cannot COLOR using not const in a COPPER list", t );
3847#define CRITICAL_WAIT_INVALID_VALUE( t ) CRITICAL2i("E396 - invalid value for WAIT LINE inside the COPPER list", t );
3848#define CRITICAL_COPPER_LIST_UNKNOWN( n ) CRITICAL2("E397 - unknown COPPER list using COPPER USE", n );
3849#define CRITICAL_INVALID_NUMBER_BYTES( n ) CRITICAL2i("E398 - invalid number of bytes for NUMBER representation", n );
3850#define CRITICAL_INVALID_NUMBER_DIGITS( n ) CRITICAL2i("E399 - invalid number of digits for NUMBER representation", n );
3851#define CRITICAL_INVALID_FRAME_WIDTH( s ) CRITICAL2("E400 - invalid frame width", s );
3852#define CRITICAL_INVALID_FRAME_HEIGHT( s ) CRITICAL2("E401 - invalid frame height", s );
3853#define CRITICAL_CANNOT_FLIP( s ) CRITICAL2("E402 - cannot FLIP this variable", s );
3854#define CRITICAL_CANNOT_DGR_ON_EMBEDDED_FONT( ) CRITICAL("E403 - cannot use DGR without custom font" );
3855#define CRITICAL_CANNOT_PUT_IMAGE_WITHOUT_STRIP( s ) CRITICAL2("E404 - cannot use STRIP with PUT IMAGE using ATLAS without STRIP", s );
3856#define CRITICAL_CANNOT_DOUBLE_BUFFER_AFTER_LOADING_RESOURCES( ) CRITICAL("E405 - cannot enable DOUBLE BUFFER after loading resources" );
3857#define CRITICAL_CANNOT_DECRYPT_TO_DATATYPE( s ) CRITICAL2("E406 - cannot DECRYPT on this kind of variable", s );
3858#define CRITICAL_HEX2BIN_UNSUPPORTED_DATATYPE( v, s ) CRITICAL3("E407 - data type not supported for HEX2BIN", v, s );
3859#define CRITICAL_DIVISION_BY_ZERO( ) CRITICAL("E408 - division by zero" );
3860
3861#define CRITICALB( s ) fprintf(stderr, "CRITICAL ERROR during building of %s:\n\t%s\n", ((struct _Environment *)_environment)->sourceFileName, s ); target_cleanup( ((struct _Environment *)_environment) ); exit( EXIT_FAILURE );
3862#define CRITICALB2( s, v ) fprintf(stderr, "CRITICAL ERROR during building of %s:\n\t%s (%s)\n", ((struct _Environment *)_environment)->sourceFileName, s, v ); target_cleanup( ((struct _Environment *)_environment) ); exit( EXIT_FAILURE );
3863#define CRITICALB2i( s, v ) fprintf(stderr, "CRITICAL ERROR during building of %s:\n\t%s (%d)\n", ((struct _Environment *)_environment)->sourceFileName, s, v ); target_cleanup( ((struct _Environment *)_environment) ); exit( EXIT_FAILURE );
3864#define CRITICALB3( s, v1, v2 ) fprintf(stderr, "CRITICAL ERROR during building of %s:\n\t%s (%s, %s)\n", ((struct _Environment *)_environment)->sourceFileName, s, v1, v2 ); target_cleanup( ((struct _Environment *)_environment) ); exit( EXIT_FAILURE );
3865#define CRITICALB3i( s, v1, v2 ) fprintf(stderr, "CRITICAL ERROR during building of %s:\n\t%s (%s, %d)\n", ((struct _Environment *)_environment)->sourceFileName, s, v1, v2 ); target_cleanup( ((struct _Environment *)_environment) ); exit( EXIT_FAILURE );
3866#define CRITICALB4si( s, v, d1, d2 ) fprintf(stderr, "CRITICAL ERROR during building of %s:\n\t%s (%s, %d, %d)\n", ((struct _Environment *)_environment)->sourceFileName, s, v, d1, d2 ); target_cleanup( ((struct _Environment *)_environment) ); exit( EXIT_FAILURE );
3867
3868#define CRITICAL_BUILD_CANNOT_READ_EXECUTABLE_FOR_DSK(d,f) CRITICALB3("B001 - cannot read executable for disk image", d, f );
3869#define CRITICAL_BUILD_INVALID_FILENAME_K7(f) CRITICALB2("B002 - invalid filename for K7 format", f );
3870#define CRITICAL_BINARY_FILE_TOO_BIG_FOR_ROM(s) CRITICALB2i("B003 - binary file too big for ROM image", s );
3871
3872#define WARNING( s ) if ( ((struct _Environment *)_environment)->warningsEnabled) { fprintf(stderr, "WARNING during compilation of %s:\n\t%s at %d\n", ((struct _Environment *)_environment)->sourceFileName, s, ((struct _Environment *)_environment)->yylineno ); }
3873#define WARNING2( s, v ) if ( ((struct _Environment *)_environment)->warningsEnabled) { fprintf(stderr, "WARNING during compilation of %s:\n\t%s (%s) at %d\n", ((struct _Environment *)_environment)->sourceFileName, s, v, _environment->yylineno ); }
3874#define WARNING2i( s, v ) if ( ((struct _Environment *)_environment)->warningsEnabled) { fprintf(stderr, "WARNING during compilation of %s:\n\t%s (%i) at %d\n", ((struct _Environment *)_environment)->sourceFileName, s, v, _environment->yylineno ); }
3875#define WARNING3( s, v1, v2 ) if ( ((struct _Environment *)_environment)->warningsEnabled) { fprintf(stderr, "WARNING during compilation of %s:\n\t%s (%s, %s) at %d\n", ((struct _Environment *)_environment)->sourceFileName, s, v1, v2, _environment->yylineno ); }
3876#define WARNING_BITWIDTH( v1, v2 ) WARNING3("W001 - Multiplication could loose precision", v1, v2 );
3877#define WARNING_DOWNCAST( v1, v2 ) WARNING3("W002 - Implicit downcasting to less bitwidth (precision loss)", v1, v2 );
3878#define WARNING_SCREEN_MODE( v1 ) WARNING2i("W003 - Screen mode unsupported", v1 );
3879#define WARNING_USE_OF_UNDEFINED_ARRAY( v1 ) WARNING2("W004 - use of undefined array", v1 );
3880#define WARNING_IMAGE_CONVERTER_UNSUPPORTED_MODE(f) WARNING2i("W005 - IMAGE converter unsupported for the given screen mode", f );
3881#define WARNING_IMAGE_LOAD_EXACT_IGNORED( ) WARNING("W006 - Loading of the image will ignore EXACT flag" );
3882#define WARNING_DLOAD_IGNORED_SIZE( f ) WARNING2("W007 - size for DLOAD is ignored", f );
3883#define WARNING_DLOAD_IGNORED_OFFSET( f ) WARNING2("W008 - offset for DLOAD is ignored", f );
3884#define WARNING_DEPRECATED( k ) WARNING2("W009 - keyword has been deprecated and has no effect", k );
3885#define WARNING_DLOAD_IGNORED_FILENAME( f ) WARNING2("W010 - filename for DLOAD is ignored", f );
3886
3887#define CHECK_POWEROF2_INVALID_MULTIPLACTOR2( value ) \
3888 if ( log2(value) != (int)log2(value) ) { \
3889 CRITICAL_INVALID_MULTIPLICATOR2(value); \
3890 }
3891#define CHECK_NOTZERO_DIVISION_BY_ZERO( value ) \
3892 if ( value == 0 ) { \
3893 CRITICAL_DIVISION_BY_ZERO(); \
3894 }
3895
3896int assemblyLineIsAComment( char * _buffer );
3897const char* strstrcase( const char* _x, const char* _y );
3898const char *strrstr(const char *haystack, const char *needle);
3899char * strreplace( const char * _orig, const char * _rep, const char * _with);
3900
3901typedef unsigned char MemoryBlock;
3902
3903typedef struct _Environment Environment;
3904
3905int buffered_fputs( Environment * _environment, const char * _string, FILE * _stream);
3906void buffered_fprintf( Environment * _environment, FILE * _stream, const char * _format, ...);
3907size_t buffered_fwrite( Environment * _environment, void * _data, size_t _size, size_t _count, FILE * _stream);
3908void buffered_push_output( Environment * _environment );
3909void buffered_output( Environment * _environment, FILE * _stream );
3910void buffered_prepend_output( Environment * _environment );
3911void buffered_pop_output( Environment * _environment );
3912
3913#define outline0n(n,s,r) \
3914 { \
3915 int outsi; \
3916 for(outsi=0; outsi<n; ++outsi) \
3917 buffered_fputs(((Environment *)_environment), "\t", ((Environment *)_environment)->asmFile); \
3918 if ( ((Environment *)_environment)->emptyProcedure ) { \
3919 buffered_fputs(((Environment *)_environment), "\t; (excluded by ON target) : ", ((Environment *)_environment)->asmFile); \
3920 } \
3921 buffered_fputs(((Environment *)_environment), s,((Environment *)_environment)->asmFile); \
3922 if ( r ) { \
3923 buffered_fputs(((Environment *)_environment), "\n", ((Environment *)_environment)->asmFile); \
3924 if ( ! ((Environment *)_environment)->emptyProcedure ) { \
3925 ((Environment *)_environment)->producedAssemblyLines += assemblyLineIsAComment( s ) ? 0 : 1; \
3926 } \
3927 } \
3928 }
3929
3930#define outline1n(n,s,a,r) \
3931 { \
3932 int outsi; \
3933 for(outsi=0; outsi<n; ++outsi) \
3934 buffered_fputs(((Environment *)_environment), "\t", ((Environment *)_environment)->asmFile); \
3935 if ( ((Environment *)_environment)->emptyProcedure ) { \
3936 buffered_fputs(((Environment *)_environment), "\t; (excluded by ON target) : ", ((Environment *)_environment)->asmFile); \
3937 } \
3938 buffered_fprintf(((Environment *)_environment), ((Environment *)_environment)->asmFile, s, a); \
3939 if ( r ) { \
3940 buffered_fputs(((Environment *)_environment), "\n", ((Environment *)_environment)->asmFile); \
3941 if ( ! ((Environment *)_environment)->emptyProcedure ) { \
3942 ((Environment *)_environment)->producedAssemblyLines += assemblyLineIsAComment( s ) ? 0 : 1; \
3943 } \
3944 } \
3945 }
3946
3947#define outline2n(n,s,a,b,r) \
3948 { \
3949 int outsi; \
3950 for(outsi=0; outsi<n; ++outsi) \
3951 buffered_fputs(((Environment *)_environment), "\t", ((Environment *)_environment)->asmFile); \
3952 if ( ((Environment *)_environment)->emptyProcedure ) { \
3953 buffered_fputs(((Environment *)_environment), "\t; (excluded by ON target) : ", ((Environment *)_environment)->asmFile); \
3954 } \
3955 buffered_fprintf(((Environment *)_environment), ((Environment *)_environment)->asmFile, s, a, b); \
3956 if ( r ) { \
3957 buffered_fputs(((Environment *)_environment), "\n", ((Environment *)_environment)->asmFile); \
3958 if ( ! ((Environment *)_environment)->emptyProcedure ) { \
3959 ((Environment *)_environment)->producedAssemblyLines += assemblyLineIsAComment( s ) ? 0 : 1; \
3960 } \
3961 } \
3962 }
3963
3964#define outline3n(n,s,a,b,c,r) \
3965 { \
3966 int outsi; \
3967 for(outsi=0; outsi<n; ++outsi) \
3968 buffered_fputs(((Environment *)_environment), "\t", ((Environment *)_environment)->asmFile); \
3969 if ( ((Environment *)_environment)->emptyProcedure ) { \
3970 buffered_fputs(((Environment *)_environment), "\t; (excluded by ON target) : ", ((Environment *)_environment)->asmFile); \
3971 } \
3972 buffered_fprintf(((Environment *)_environment), ((Environment *)_environment)->asmFile, s, a, b, c); \
3973 if ( r ) { \
3974 buffered_fputs(((Environment *)_environment), "\n", ((Environment *)_environment)->asmFile); \
3975 if ( ! ((Environment *)_environment)->emptyProcedure ) { \
3976 ((Environment *)_environment)->producedAssemblyLines += assemblyLineIsAComment( s ) ? 0 : 1; \
3977 } \
3978 } \
3979 }
3980
3981#define outline4n(n,s,a,b,c,d,r) \
3982 { \
3983 int outsi; \
3984 for(outsi=0; outsi<n; ++outsi) \
3985 buffered_fputs(((Environment *)_environment), "\t", ((Environment *)_environment)->asmFile); \
3986 if ( ((Environment *)_environment)->emptyProcedure ) { \
3987 buffered_fputs(((Environment *)_environment), "\t; (excluded by ON target) : ", ((Environment *)_environment)->asmFile); \
3988 } \
3989 buffered_fprintf(((Environment *)_environment), ((Environment *)_environment)->asmFile, s, a, b, c, d); \
3990 if ( r ) { \
3991 buffered_fputs(((Environment *)_environment), "\n", ((Environment *)_environment)->asmFile); \
3992 if ( ! ((Environment *)_environment)->emptyProcedure ) { \
3993 ((Environment *)_environment)->producedAssemblyLines += assemblyLineIsAComment( s ) ? 0 : 1; \
3994 } \
3995 } \
3996 }
3997
3998#define outline5n(n,s,a,b,c,d,e,r) \
3999 { \
4000 int outsi; \
4001 for(outsi=0; outsi<n; ++outsi) \
4002 buffered_fputs(((Environment *)_environment), "\t", ((Environment *)_environment)->asmFile); \
4003 if ( ((Environment *)_environment)->emptyProcedure ) { \
4004 buffered_fputs(((Environment *)_environment), "\t; (excluded by ON target) : ", ((Environment *)_environment)->asmFile); \
4005 } \
4006 buffered_fprintf(((Environment *)_environment), ((Environment *)_environment)->asmFile, s, a, b, c, d, e); \
4007 if ( r ) { \
4008 buffered_fputs(((Environment *)_environment), "\n", ((Environment *)_environment)->asmFile); \
4009 if ( ! ((Environment *)_environment)->emptyProcedure ) { \
4010 ((Environment *)_environment)->producedAssemblyLines += assemblyLineIsAComment( s ) ? 0 : 1; \
4011 } \
4012 } \
4013 }
4014
4015#define outline6n(n,s,a,b,c,d,e,f,r) \
4016 { \
4017 int outsi; \
4018 for(outsi=0; outsi<n; ++outsi) \
4019 buffered_fputs(((Environment *)_environment), "\t", ((Environment *)_environment)->asmFile); \
4020 if ( ((Environment *)_environment)->emptyProcedure ) { \
4021 buffered_fputs(((Environment *)_environment), "\t; (excluded by ON target) : ", ((Environment *)_environment)->asmFile); \
4022 } \
4023 buffered_fprintf(((Environment *)_environment), ((Environment *)_environment)->asmFile, s, a, b, c, d, e, f); \
4024 if ( r ) { \
4025 buffered_fputs(((Environment *)_environment), "\n", ((Environment *)_environment)->asmFile); \
4026 if ( ! ((Environment *)_environment)->emptyProcedure ) { \
4027 ((Environment *)_environment)->producedAssemblyLines += assemblyLineIsAComment( s ) ? 0 : 1; \
4028 } \
4029 } \
4030 }
4031
4032
4033#define cfgline0n(n,s,r) \
4034 { \
4035 int outsi; \
4036 for(outsi=0; outsi<n; ++outsi) \
4037 fputs("\t", ((Environment *)_environment)->configurationFile); \
4038 fputs(s,((Environment *)_environment)->configurationFile); \
4039 if ( r ) \
4040 fputs("\n", ((Environment *)_environment)->configurationFile); \
4041 }
4042
4043#define cfgline1n(n,s,a,r) \
4044 { \
4045 int outsi; \
4046 for(outsi=0; outsi<n; ++outsi) \
4047 fputs("\t", ((Environment *)_environment)->configurationFile); \
4048 fprintf(((Environment *)_environment)->configurationFile, s, a); \
4049 if ( r ) \
4050 fputs("\n", ((Environment *)_environment)->configurationFile); \
4051 }
4052
4053#define cfgline2n(n,s,a,b,r) \
4054 { \
4055 int outsi; \
4056 for(outsi=0; outsi<n; ++outsi) \
4057 fputs("\t", ((Environment *)_environment)->configurationFile); \
4058 fprintf(((Environment *)_environment)->configurationFile, s, a, b); \
4059 if ( r ) \
4060 fputs("\n", ((Environment *)_environment)->configurationFile); \
4061 }
4062
4063#define cfgline3n(n,s,a,b,c,r) \
4064 { \
4065 int outsi; \
4066 for(outsi=0; outsi<n; ++outsi) \
4067 fputs("\t", ((Environment *)_environment)->configurationFile); \
4068 fprintf(((Environment *)_environment)->configurationFile, s, a, b, c); \
4069 if ( r ) \
4070 fputs("\n", ((Environment *)_environment)->configurationFile); \
4071 }
4072
4073#define cfgline4n(n,s,a,b,c,d,r) \
4074 { \
4075 int outsi; \
4076 for(outsi=0; outsi<n; ++outsi) \
4077 fputs("\t", ((Environment *)_environment)->configurationFile); \
4078 fprintf(((Environment *)_environment)->configurationFile, s, a, b, c, d); \
4079 if ( r ) \
4080 fputs("\n", ((Environment *)_environment)->configurationFile); \
4081 }
4082
4083#define cfgline5n(n,s,a,b,c,d,e,r) \
4084 { \
4085 int outsi; \
4086 for(outsi=0; outsi<n; ++outsi) \
4087 fputs("\t", ((Environment *)_environment)->configurationFile); \
4088 fprintf(((Environment *)_environment)->configurationFile, s, a, b, c, d, e); \
4089 if ( r ) \
4090 fputs("\n", ((Environment *)_environment)->configurationFile); \
4091 }
4092
4093#define outfile0(f) \
4094 { \
4095 FILE * fh = fopen( f, "rt" ); \
4096 if ( fh ) { \
4097 char line[MAX_TEMPORARY_STORAGE]; \
4098 while( ! feof( fh ) ) { \
4099 if ( fgets( line, MAX_TEMPORARY_STORAGE, fh ) ) { \
4100 buffered_fputs(((Environment *)_environment), line, ((Environment *)_environment)->asmFile); \
4101 ((Environment *)_environment)->producedAssemblyLines += assemblyLineIsAComment( line ) ? 0 : 1; \
4102 } \
4103 } \
4104 fclose( fh ); \
4105 buffered_fputs(((Environment *)_environment), "\n", ((Environment *)_environment)->asmFile); \
4106 } else { \
4107 CRITICAL2("Unable to include ugbasic system file", f ); \
4108 } \
4109 }
4110
4111int embedparse (void *);
4112int embed_scan_string (const char *);
4113
4114#define outembedded0(e) \
4115 { \
4116 char * parsed = malloc( (8*e##_len) + 1 ); \
4117 memset( parsed, 0, (8*e##_len) + 1 ); \
4118 char * tmp = malloc( e##_len + 1 ); \
4119 memset( tmp, 0, e##_len + 1 ); \
4120 memcpy( tmp, e, e##_len ); \
4121 char * line = strtok( tmp, "\x0a" ); \
4122 while( line ) { \
4123 _environment->embedResult.line = line; \
4124 _environment->embedResult.conditional = 0; \
4125 _environment->embedResult.lineCount = 0; \
4126 embed_scan_string( line ); \
4127 embedparse(_environment); \
4128 if ( ! _environment->embedResult.conditional ) { \
4129 int i; \
4130 for( i=0; i<_environment->embedResult.current; ++i ) { \
4131 if ( _environment->embedResult.excluded[i] ) \
4132 break; \
4133 } \
4134 if ( i>= _environment->embedResult.current ) { \
4135 if ( _environment->embedResult.lineCount ) { \
4136 int j=0; \
4137 for( j=0; j<_environment->embedResult.lineCount; ++j ) { \
4138 strcat( parsed, _environment->embedResult.lines[j] ); \
4139 strcat( parsed, "\x0a" ); \
4140 ((Environment *)_environment)->producedAssemblyLines += assemblyLineIsAComment( _environment->embedResult.lines[j] ) ? 0 : 1; \
4141 } \
4142 } else { \
4143 strcat( parsed, line ); \
4144 strcat( parsed, "\x0a" ); \
4145 ((Environment *)_environment)->producedAssemblyLines += assemblyLineIsAComment( line ) ? 0 : 1; \
4146 } \
4147 } \
4148 } \
4149 line = strtok( NULL, "\x0a" ); \
4150 } \
4151 if ( _environment->embedResult.current > 0 ) { \
4152 CRITICAL_UNCLOSED_EMBEDDED_ESCAPE_SEQUENCE( #e ); \
4153 } \
4154 free( tmp ); \
4155 if ( strlen( parsed ) ) { \
4156 buffered_fwrite( ((Environment *)_environment), parsed, strlen( parsed )-1, 1, ((Environment *)_environment)->asmFile ); \
4157 buffered_fputs( ((Environment *)_environment), "\n", ((Environment *)_environment)->asmFile ); \
4158 } \
4159 free( parsed ); \
4160 }
4161
4162#define outembeddeddef0(e) \
4163 { \
4164 int deferredIndex = 0; \
4165 \
4166 for( deferredIndex = 0; deferredIndex < MAX_TEMPORARY_STORAGE; ++deferredIndex ) { \
4167 if ( !_environment->deferredEmbedded[deferredIndex] ) { \
4168 break; \
4169 } \
4170 } \
4171 \
4172 char * tmp = malloc( e##_len + 1 ); \
4173 memset( tmp, 0, e##_len + 1 ); \
4174 memcpy( tmp, e, e##_len ); \
4175 \
4176 _environment->deferredEmbedded[deferredIndex] = tmp; \
4177 _environment->deferredEmbeddedSize[deferredIndex] = e##_len; \
4178 \
4179 }
4180
4181
4182#define adiline0(s) \
4183 if ( ((Environment *)_environment)->additionalInfoFile ) { \
4184 fprintf( ((Environment *)_environment)->additionalInfoFile, s ); \
4185 fprintf( ((Environment *)_environment)->additionalInfoFile, "\n" ); \
4186 }
4187#define adiline1(s,a) \
4188 if ( ((Environment *)_environment)->additionalInfoFile ) { \
4189 fprintf( ((Environment *)_environment)->additionalInfoFile, s, a ); \
4190 fprintf( ((Environment *)_environment)->additionalInfoFile, "\n" ); \
4191 }
4192#define adiline2(s,a,b) \
4193 if ( ((Environment *)_environment)->additionalInfoFile ) { \
4194 fprintf( ((Environment *)_environment)->additionalInfoFile, s, a, b ); \
4195 fprintf( ((Environment *)_environment)->additionalInfoFile, "\n" ); \
4196 }
4197#define adiline3(s,a,b,c) \
4198 if ( ((Environment *)_environment)->additionalInfoFile ) { \
4199 fprintf( ((Environment *)_environment)->additionalInfoFile, s, a, b, c ); \
4200 fprintf( ((Environment *)_environment)->additionalInfoFile, "\n" ); \
4201 }
4202#define adiline4(s,a,b,c,d) \
4203 if ( ((Environment *)_environment)->additionalInfoFile ) { \
4204 fprintf( ((Environment *)_environment)->additionalInfoFile, s, a, b, c, d ); \
4205 fprintf( ((Environment *)_environment)->additionalInfoFile, "\n" ); \
4206 }
4207#define adiline5(s,a,b,c,d,e) \
4208 if ( ((Environment *)_environment)->additionalInfoFile ) { \
4209 fprintf( ((Environment *)_environment)->additionalInfoFile, s, a, b, c, d, e ); \
4210 fprintf( ((Environment *)_environment)->additionalInfoFile, "\n" ); \
4211 }
4212
4213#define adiline6(s,a,b,c,d,e,f) \
4214 if ( ((Environment *)_environment)->additionalInfoFile ) { \
4215 fprintf( ((Environment *)_environment)->additionalInfoFile, s, a, b, c, d, e, f ); \
4216 fprintf( ((Environment *)_environment)->additionalInfoFile, "\n" ); \
4217 }
4218
4219#define adilinepalette(s,c,p) \
4220 if ( ((Environment *)_environment)->additionalInfoFile ) { \
4221 fprintf( ((Environment *)_environment)->additionalInfoFile, s, c ); \
4222 fprintf( ((Environment *)_environment)->additionalInfoFile, ":" ); \
4223 int i = 0; \
4224 for( i=0; i<c; ++i ) { \
4225 fprintf( ((Environment *)_environment)->additionalInfoFile, "%2.2x%2.2x%2.2x%2.2x:%2.2x:%s :%2.2x:%2.2x:%2.2x:", \
4226 p[i].alpha, p[i].red, p[i].green, p[i].blue, p[i].index, (p[i].description)?p[i].description:"", p[i].hardwareIndex, p[i].used, p[i].count ); \
4227 } \
4228 fprintf( ((Environment *)_environment)->additionalInfoFile, "\n" ); \
4229 }
4230
4231#define adilinebeginbitmap(s) \
4232 if ( ((Environment *)_environment)->additionalInfoFile ) { \
4233 fprintf( ((Environment *)_environment)->additionalInfoFile, "%s:", s ); \
4234 }
4235
4236#define adilinepixel(p) \
4237 if ( ((Environment *)_environment)->additionalInfoFile ) { \
4238 fprintf( ((Environment *)_environment)->additionalInfoFile, "%2.2x:", p ); \
4239 }
4240
4241#define adilineendbitmap() \
4242 if ( ((Environment *)_environment)->additionalInfoFile ) { \
4243 fprintf( ((Environment *)_environment)->additionalInfoFile, "\n" ); \
4244 }
4245
4246#define outhead0(s) outline0n(0, s, 1)
4247#define outhead1(s,a) outline1n(0, s, a, 1)
4248#define outhead2(s,a,b) outline2n(0, s, a, b, 1)
4249#define outhead3(s,a,b,c) outline3n(0, s, a, b, c, 1)
4250#define outhead4(s,a,b,c,d) outline4n(0, s, a, b, c, d, 1)
4251#define outhead5(s,a,b,c,d,e) outline5n(0, s, a, b, c, d, e, 1)
4252#define outline0(s) outline0n(1, s, 1)
4253#define outline1(s,a) outline1n(1, s, a, 1)
4254#define outline2(s,a,b) outline2n(1, s, a, b, 1)
4255#define outline3(s,a,b,c) outline3n(1, s, a, b, c, 1)
4256#define outline4(s,a,b,c,d) outline4n(1, s, a, b, c, d, 1)
4257#define outline5(s,a,b,c,d,e) outline5n(1, s, a, b, c, d, e, 1)
4258#define outline6(s,a,b,c,d,e,f) outline6n(1, s, a, b, c, d, e, f, 1)
4259#define out0(s) outline0n(0, s, 0)
4260#define out1(s,a) outline1n(0, s, a, 0)
4261#define out2(s,a,b) outline2n(0, s, a, b, 0)
4262#define out3(s,a,b,c) outline3n(0, s, a, b, c, 0)
4263#define out4(s,a,b,c,d) outline4n(0, s, a, b, c, d, 0)
4264#define out5(s,a,b,c,d,e) outline5n(0, s, a, b, c, d, e, 0)
4265#define out6(s,a,b,c,d,e,f) outline6n(0, s, a, b, c, d, e, f, 0)
4266
4267#define cfghead0(s) cfgline0n(0, s, 1)
4268#define cfghead1(s,a) cfgline1n(0, s, a, 1)
4269#define cfghead2(s,a,b) cfgline2n(0, s, a, b, 1)
4270#define cfghead3(s,a,b,c) cfgline3n(0, s, a, b, c, 1)
4271#define cfghead4(s,a,b,c,d) cfgline4n(0, s, a, b, c, d, 1)
4272#define cfghead5(s,a,b,c,d,e) cfgline5n(0, s, a, b, c, d, e, 1)
4273#define cfgline0(s) cfgline0n(1, s, 1)
4274#define cfgline1(s,a) cfgline1n(1, s, a, 1)
4275#define cfgline2(s,a,b) cfgline2n(1, s, a, b, 1)
4276#define cfgline3(s,a,b,c) cfgline3n(1, s, a, b, c, 1)
4277#define cfgline4(s,a,b,c,d) cfgline4n(1, s, a, b, c, d, 1)
4278#define cfgline5(s,a,b,c,d,e) cfgline5n(1, s, a, b, c, d, e 1)
4279#define cfg0(s) cfgline0n(0, s, 0)
4280#define cfg1(s,a) cfgline1n(0, s, a, 0)
4281#define cfg2(s,a,b) cfgline2n(0, s, a, b, 0)
4282#define cfg3(s,a,b,c) cfgline3n(0, s, a, b, c, 0)
4283#define cfg4(s,a,b,c,d) cfgline4n(0, s, a, b, c, d, 0)
4284#define cfg5(s,a,b,c,d,e) cfgline5n(0, s, a, b, c, d, e, 0)
4285
4286#ifndef _DEBUG
4287
4288 #define deploy(s,e) \
4289 if ( ! _environment->deployed.s ) { \
4290 int ignoreEmptyProcedure = _environment->emptyProcedure; \
4291 _environment->emptyProcedure = 0; \
4292 cpu_jump( _environment, #s "_after" ); \
4293 outembedded0(e); \
4294 cpu_label( _environment, #s "_after" ); \
4295 _environment->emptyProcedure = ignoreEmptyProcedure; \
4296 _environment->deployed.s = 1; \
4297 }
4298
4299 #define deploy_preferred(s,e) \
4300 _environment->deployed.s = 1; \
4301
4302 #define deploy_deferred(s,e) \
4303 if ( ! _environment->deployed.s ) { \
4304 outembeddeddef0(e); \
4305 _environment->deployed.s = 1; \
4306 }
4307
4308 #define deploy_inplace(s,e) \
4309 if ( ! _environment->deployed.s ) { \
4310 outembedded0(e); \
4311 }
4312
4313 #define deploy_inplace_preferred(s,e) \
4314 if ( _environment->deployed.s ) { \
4315 _environment->deployed.s = 0; \
4316 deploy_inplace(s,e); \
4317 _environment->deployed.s = 1; \
4318 }
4319
4320 #define deploy_with_vars(s,e,v) \
4321 if ( ! _environment->deployed.s ) { \
4322 int ignoreEmptyProcedure = _environment->emptyProcedure; \
4323 _environment->emptyProcedure = 0; \
4324 cpu_jump( _environment, #s "_after" ); \
4325 outembedded0(e); \
4326 v(_environment);\
4327 cpu_label( _environment, #s "_after" ); \
4328 _environment->emptyProcedure = ignoreEmptyProcedure; \
4329 _environment->deployed.s = 1; \
4330 }
4331
4332 #define deploy_deferred_with_vars(s,e,v) \
4333 if ( ! _environment->deployed.s ) { \
4334 outembeddeddef0(e); \
4335 v(_environment);\
4336 _environment->deployed.s = 1; \
4337 }
4338
4339 #define deploy_embedded(s,e) \
4340 if ( ! _environment->deployed.embedded.s ) { \
4341 int ignoreEmptyProcedure = _environment->emptyProcedure; \
4342 _environment->emptyProcedure = 0; \
4343 cpu_jump( _environment, #s "_after" ); \
4344 outembedded0(e); \
4345 cpu_label( _environment, #s "_after" ); \
4346 _environment->emptyProcedure = ignoreEmptyProcedure; \
4347 _environment->deployed.embedded.s = 1; \
4348 }
4349
4350 #define deploy_deferred_embedded(s,e) \
4351 if ( ! _environment->deployed.embedded.s ) { \
4352 outembeddeddef0(e); \
4353 _environment->deployed.embedded.s = 1; \
4354 }
4355
4356 #define deploy_begin(s) \
4357 if ( ! _environment->deployed.s ) { \
4358 int ignoreProtothread = _environment->protothread; \
4359 int ignoreEmptyProcedure = _environment->emptyProcedure; \
4360 _environment->protothread = 0; \
4361 _environment->emptyProcedure = 0; \
4362 cpu_jump( _environment, #s "_after" ); \
4363 cpu_label( _environment, "lib_" #s ); \
4364
4365 #define deploy_end(s) \
4366 cpu_label( _environment, #s "_after" ); \
4367 _environment->protothread = ignoreProtothread; \
4368 _environment->emptyProcedure = ignoreEmptyProcedure; \
4369 _environment->deployed.s = 1; \
4370 }
4371
4372 #define inline(s) \
4373 _environment->embeddedStats.s++; \
4374 if ( !_environment->embedded.s ) {
4375
4376 #define no_inline(s) \
4377 if ( !_environment->embedded.s ) { \
4378 CRITICAL_UNABLE_TO_INLINE(#s); \
4379
4380 #define no_embedded(s) \
4381 } else { \
4382 CRITICAL_UNABLE_TO_EMBED(#s); \
4383 }
4384
4385 #define embedded(s,e) \
4386 } else { \
4387 deploy_embedded(s,e) \
4388
4389 #define done() \
4390 }
4391
4392 #define parse_embedded(p, s) \
4393 if ( strcmp( p, #s ) == 0 ) { \
4394 _environment->embedded.s = 1; \
4395 }
4396
4397#else
4398
4399 #define deploy(s,e) \
4400 printf( "deploy(%s) %s:%d\n", #s, __FILE__, __LINE__ ); \
4401 if ( ! _environment->deployed.s ) { \
4402 int ignoreEmptyProcedure = _environment->emptyProcedure; \
4403 _environment->emptyProcedure = 0; \
4404 cpu_jump( _environment, #s "_after" ); \
4405 outembedded0(e); \
4406 cpu_label( _environment, #s "_after" ); \
4407 _environment->emptyProcedure = ignoreEmptyProcedure; \
4408 _environment->deployed.s = 1; \
4409 printf( " deployed.%s = 1\n", #s ); \
4410 }
4411
4412 #define deploy_preferred(s,e) \
4413 printf( "deploy_preferred(%s) %s:%d\n", #s, __FILE__, __LINE__ ); \
4414 _environment->deployed.s = 1; \
4415 printf( " deployed.%s = 1\n", #s ); \
4416
4417 #define deploy_deferred(s,e) \
4418 printf( "deploy_deferred(%s) %s:%d\n", #s, __FILE__, __LINE__ ); \
4419 if ( ! _environment->deployed.s ) { \
4420 outembeddeddef0(e); \
4421 _environment->deployed.s = 1; \
4422 printf( " deployed.%s = 1\n", #s ); \
4423 }
4424
4425 #define deploy_inplace(s,e) \
4426 printf( "deploy_inplace(%s) %s:%d\n", #s, __FILE__, __LINE__ ); \
4427 if ( ! _environment->deployed.s ) { \
4428 outembedded0(e); \
4429 }
4430
4431 #define deploy_inplace_preferred(s,e) \
4432 printf( "deploy_inplace_preferred(%s) %s:%d\n", #s, __FILE__, __LINE__ ); \
4433 if ( _environment->deployed.s ) { \
4434 _environment->deployed.s = 0; \
4435 deploy_inplace(s,e); \
4436 _environment->deployed.s = 1; \
4437 printf( " deployed.%s = 1\n", #s ); \
4438 }
4439
4440 #define deploy_with_vars(s,e,v) \
4441 printf( "deploy_with_vars(%s) %s:%d\n", #s, __FILE__, __LINE__ ); \
4442 if ( ! _environment->deployed.s ) { \
4443 int ignoreEmptyProcedure = _environment->emptyProcedure; \
4444 _environment->emptyProcedure = 0; \
4445 cpu_jump( _environment, #s "_after" ); \
4446 outembedded0(e); \
4447 v(_environment);\
4448 cpu_label( _environment, #s "_after" ); \
4449 _environment->emptyProcedure = ignoreEmptyProcedure; \
4450 _environment->deployed.s = 1; \
4451 printf( " deployed.%s = 1\n", #s ); \
4452 }
4453
4454 #define deploy_deferred_with_vars(s,e,v) \
4455 printf( "deploy_deferred_with_vars(%s) %s:%d\n", #s, __FILE__, __LINE__ ); \
4456 if ( ! _environment->deployed.s ) { \
4457 outembeddeddef0(e); \
4458 v(_environment);\
4459 _environment->deployed.s = 1; \
4460 printf( " deployed.%s = 1\n", #s ); \
4461 }
4462
4463 #define deploy_embedded(s,e) \
4464 printf( "deploy_embedded(%s) %s:%d\n", #s, __FILE__, __LINE__ ); \
4465 if ( ! _environment->deployed.embedded.s ) { \
4466 int ignoreEmptyProcedure = _environment->emptyProcedure; \
4467 _environment->emptyProcedure = 0; \
4468 cpu_jump( _environment, #s "_after" ); \
4469 outembedded0(e); \
4470 cpu_label( _environment, #s "_after" ); \
4471 _environment->emptyProcedure = ignoreEmptyProcedure; \
4472 _environment->deployed.embedded.s = 1; \
4473 printf( " deployed.%s = 1\n", #s ); \
4474 }
4475
4476 #define deploy_deferred_embedded(s,e) \
4477 printf( "deploy_deferred_embedded(%s) %s:%d\n", #s, __FILE__, __LINE__ ); \
4478 if ( ! _environment->deployed.embedded.s ) { \
4479 outembeddeddef0(e); \
4480 _environment->deployed.embedded.s = 1; \
4481 printf( " deployed.%s = 1\n", #s ); \
4482 }
4483
4484 #define deploy_begin(s) \
4485 printf( "deploy_begin(%s) %s:%d\n", #s, __FILE__, __LINE__ ); \
4486 if ( ! _environment->deployed.s ) { \
4487 int ignoreProtothread = _environment->protothread; \
4488 int ignoreEmptyProcedure = _environment->emptyProcedure; \
4489 _environment->protothread = 0; \
4490 _environment->emptyProcedure = 0; \
4491 cpu_jump( _environment, #s "_after" ); \
4492 cpu_label( _environment, "lib_" #s );
4493
4494 #define deploy_end(s) \
4495 printf( "deploy_end(%s) %s:%d\n", #s, __FILE__, __LINE__ ); \
4496 cpu_label( _environment, #s "_after" ); \
4497 _environment->protothread = ignoreProtothread; \
4498 _environment->emptyProcedure = ignoreEmptyProcedure; \
4499 _environment->deployed.s = 1; \
4500 printf( " deployed.%s = 1\n", #s ); \
4501 }
4502
4503 #define inline(s) \
4504 _environment->embeddedStats.s++; \
4505 if ( !_environment->embedded.s ) {
4506
4507 #define no_inline(s) \
4508 if ( !_environment->embedded.s ) { \
4509 CRITICAL_UNABLE_TO_INLINE(#s); \
4510
4511 #define no_embedded(s) \
4512 } else { \
4513 CRITICAL_UNABLE_TO_EMBED(#s); \
4514 }
4515
4516 #define embedded(s,e) \
4517 } else { \
4518 deploy_embedded(s,e) \
4519
4520 #define done() \
4521 }
4522
4523 #define parse_embedded(p, s) \
4524 if ( strcmp( p, #s ) == 0 ) { \
4525 _environment->embedded.s = 1; \
4526 }
4527
4528#endif
4529
4530#define stats_embedded(s) \
4531 printf("%s:\t%d\t%s\t\n", #s, _environment->embeddedStats.s, _environment->embedded.s ? "embedded" : "inline" );
4532
4533#define WW_PEN 1
4534#define WW_PAPER 2
4535
4536#define SHIFT_LEFT 1
4537#define SHIFT_RIGHT 2
4538#define SHIFT_CAPSLOCK 4
4539#define SHIFT_CONTROL 8
4540#define SHIFT_LEFT_ALT 16
4541#define SHIFT_RIGHT_ALT 32
4542
4543#define TILEMAP_NATIVE 0
4544#define BITMAP_NATIVE 1
4545
4546#define PROTOTHREAD_STATUS_WAITING 0
4547#define PROTOTHREAD_STATUS_RUNNING 1
4548#define PROTOTHREAD_STATUS_YIELDED 2
4549#define PROTOTHREAD_STATUS_EXITED 3
4550#define PROTOTHREAD_STATUS_ENDED 4
4551#define PROTOTHREAD_STATUS_PAUSED 5
4552
4553#define FLAG_FLIP_X 1
4554#define FLAG_FLIP_Y 2
4555#define FLAG_ROLL_X 4
4556#define FLAG_OVERLAYED 8
4557#define FLAG_ROLL_Y 16
4558
4559#define SPRITE_FLAG_MULTICOLOR 0x8000
4560#define SPRITE_FLAG_MONOCOLOR 0x4000
4561#define SPRITE_FLAG_EXPAND_VERTICAL 0x2000
4562#define SPRITE_FLAG_COMPRESS_VERTICAL 0x1000
4563#define SPRITE_FLAG_EXPAND_HORIZONTAL 0x0800
4564#define SPRITE_FLAG_COMPRESS_HORIZONTAL 0x0400
4565#define SPRITE_FLAG_TRANSPARENCY_COLOR 0x0200
4566
4567#define FLAG_TRANSPARENCY 32
4568#define FLAG_DOUBLE_Y 64
4569#define FLAG_EXACT 128
4570#define FLAG_COMPRESSED 256
4571#define FLAG_WITH_PALETTE 512
4572
4573#define IMF_INSTRUMENT_EXPLOSION 0x00
4574#define IMF_INSTRUMENT_ACOUSTIC_GRAND_PIANO 0x01
4575#define IMF_INSTRUMENT_BRIGHT_ACOUSTIC_PIANO 0x02
4576#define IMF_INSTRUMENT_ELECTRIC_GRAND_PIANO 0x03
4577#define IMF_INSTRUMENT_HONKY_TONK_PIANO 0x04
4578#define IMF_INSTRUMENT_ELECTRIC_PIANO1 0x05
4579#define IMF_INSTRUMENT_ELECTRIC_PIANO2 0x06
4580#define IMF_INSTRUMENT_HARPSICHORD 0x07
4581#define IMF_INSTRUMENT_CLAVI 0x08
4582#define IMF_INSTRUMENT_CELESTA 0x09
4583#define IMF_INSTRUMENT_GLOCKENSPIEL 0x0A
4584#define IMF_INSTRUMENT_MUSIC_BOX 0x0B
4585#define IMF_INSTRUMENT_VIBRAPHONE 0x0C
4586#define IMF_INSTRUMENT_MARIMBA 0x0D
4587#define IMF_INSTRUMENT_XYLOPHONE 0x0E
4588#define IMF_INSTRUMENT_TUBULAR_BELLS 0x0F
4589#define IMF_INSTRUMENT_DULCIMER 0x10
4590#define IMF_INSTRUMENT_DRAWBAR_ORGAN 0x11
4591#define IMF_INSTRUMENT_PERCUSSIVE_ORGAN 0x12
4592#define IMF_INSTRUMENT_ROCK_ORGAN 0x13
4593#define IMF_INSTRUMENT_CHURCH_ORGAN 0x14
4594#define IMF_INSTRUMENT_REED_ORGAN 0x15
4595#define IMF_INSTRUMENT_ACCORDION 0x16
4596#define IMF_INSTRUMENT_HARMONICA 0x17
4597#define IMF_INSTRUMENT_TANGO_ACCORDION 0x18
4598#define IMF_INSTRUMENT_ACOUSTIC_GUITAR_NYLON 0x19
4599#define IMF_INSTRUMENT_ACOUSTIC_GUITAR_STEEL 0x1A
4600#define IMF_INSTRUMENT_ELECTRIC_GUITAR_JAZZ 0x1B
4601#define IMF_INSTRUMENT_ELECTRIC_GUITAR_CLEAN 0x1C
4602#define IMF_INSTRUMENT_ELECTRIC_GUITAR_MUTED 0x1D
4603#define IMF_INSTRUMENT_OVERDRIVEN_GUITAR 0x1E
4604#define IMF_INSTRUMENT_DISTORTION_GUITAR 0x1F
4605#define IMF_INSTRUMENT_GUITAR_HARMONICS 0x20
4606#define IMF_INSTRUMENT_ACOUSTIC_BASS 0x21
4607#define IMF_INSTRUMENT_ELECTRIC_BASS_FINGER 0x22
4608#define IMF_INSTRUMENT_ELECTRIC_BASS_PICK 0x23
4609#define IMF_INSTRUMENT_FRETLESS_BASS 0x24
4610#define IMF_INSTRUMENT_SLAP_BASS_1 0x25
4611#define IMF_INSTRUMENT_SLAP_BASS_2 0x26
4612#define IMF_INSTRUMENT_SYNTH_BASS_1 0x27
4613#define IMF_INSTRUMENT_SYNTH_BASS_2 0x28
4614#define IMF_INSTRUMENT_VIOLIN 0x29
4615#define IMF_INSTRUMENT_VIOLA 0x2A
4616#define IMF_INSTRUMENT_CELLO 0x2B
4617#define IMF_INSTRUMENT_CONTRABASS 0x2C
4618#define IMF_INSTRUMENT_TREMOLO_STRINGS 0x2D
4619#define IMF_INSTRUMENT_PIZZICATO_STRINGS 0x2E
4620#define IMF_INSTRUMENT_ORCHESTRAL_HARP 0x2F
4621#define IMF_INSTRUMENT_TIMPANI 0x30
4622#define IMF_INSTRUMENT_STRING_ENSEMBLE_1 0x31
4623#define IMF_INSTRUMENT_STRING_ENSEMBLE_2 0x32
4624#define IMF_INSTRUMENT_SYNTHSTRINGS_1 0x33
4625#define IMF_INSTRUMENT_SYNTHSTRINGS_2 0x34
4626#define IMF_INSTRUMENT_CHOIR_AAHS 0x35
4627#define IMF_INSTRUMENT_VOICE_OOHS 0x36
4628#define IMF_INSTRUMENT_SYNTH_VOICE 0x37
4629#define IMF_INSTRUMENT_ORCHESTRA_HIT 0x38
4630#define IMF_INSTRUMENT_TRUMPET 0x39
4631#define IMF_INSTRUMENT_TROMBONE 0x3A
4632#define IMF_INSTRUMENT_TUBA 0x3B
4633#define IMF_INSTRUMENT_MUTED_TRUMPET 0x3C
4634#define IMF_INSTRUMENT_FRENCH_HORN 0x3D
4635#define IMF_INSTRUMENT_BRASS_SECTION 0x3E
4636#define IMF_INSTRUMENT_SYNTHBRASS_1 0x3F
4637#define IMF_INSTRUMENT_SYNTHBRASS_2 0x40
4638#define IMF_INSTRUMENT_SOPRANO_SAX 0x41
4639#define IMF_INSTRUMENT_ALTO_SAX 0x42
4640#define IMF_INSTRUMENT_TENOR_SAX 0x43
4641#define IMF_INSTRUMENT_BARITONE_SAX 0x44
4642#define IMF_INSTRUMENT_OBOE 0x45
4643#define IMF_INSTRUMENT_ENGLISH_HORN 0x46
4644#define IMF_INSTRUMENT_BASSOON 0x47
4645#define IMF_INSTRUMENT_CLARINET 0x48
4646#define IMF_INSTRUMENT_PICCOLO 0x49
4647#define IMF_INSTRUMENT_FLUTE 0x4A
4648#define IMF_INSTRUMENT_RECORDER 0x4B
4649#define IMF_INSTRUMENT_PAN_FLUTE 0x4C
4650#define IMF_INSTRUMENT_BLOWN_BOTTLE 0x4D
4651#define IMF_INSTRUMENT_SHAKUHACHI 0x4E
4652#define IMF_INSTRUMENT_WHISTLE 0x4F
4653#define IMF_INSTRUMENT_OCARINA 0x50
4654#define IMF_INSTRUMENT_LEAD_1_SQUARE 0x51
4655#define IMF_INSTRUMENT_LEAD_2_SAWTOOTH 0x52
4656#define IMF_INSTRUMENT_LEAD_3_CALLIOPE 0x53
4657#define IMF_INSTRUMENT_LEAD_4_CHIFF 0x54
4658#define IMF_INSTRUMENT_LEAD_5_CHARANG 0x55
4659#define IMF_INSTRUMENT_LEAD_6_VOICE 0x56
4660#define IMF_INSTRUMENT_LEAD_7_FIFTHS 0x57
4661#define IMF_INSTRUMENT_LEAD_8_BASS_LEAD 0x58
4662#define IMF_INSTRUMENT_PAD_1_NEW_AGE 0x59
4663#define IMF_INSTRUMENT_PAD_2_WARM 0x5A
4664#define IMF_INSTRUMENT_PAD_3_POLYSYNTH 0x5B
4665#define IMF_INSTRUMENT_PAD_4_CHOIR 0x5C
4666#define IMF_INSTRUMENT_PAD_5_BOWED 0x5D
4667#define IMF_INSTRUMENT_PAD_6_METALLIC 0x5E
4668#define IMF_INSTRUMENT_PAD_7_HALO 0x5F
4669#define IMF_INSTRUMENT_PAD_8_SWEEP 0x60
4670#define IMF_INSTRUMENT_FX_1_RAIN 0x61
4671#define IMF_INSTRUMENT_FX_2_SOUNDTRACK 0x62
4672#define IMF_INSTRUMENT_FX_3_CRYSTAL 0x63
4673#define IMF_INSTRUMENT_FX_4_ATMOSPHERE 0x64
4674#define IMF_INSTRUMENT_FX_5_BRIGHTNESS 0x65
4675#define IMF_INSTRUMENT_FX_6_GOBLINS 0x66
4676#define IMF_INSTRUMENT_FX_7_ECHOES 0x67
4677#define IMF_INSTRUMENT_FX_8_SCI_FI 0x68
4678#define IMF_INSTRUMENT_SITAR 0x69
4679#define IMF_INSTRUMENT_BANJO 0x6A
4680#define IMF_INSTRUMENT_SHAMISEN 0x6B
4681#define IMF_INSTRUMENT_KOTO 0x6C
4682#define IMF_INSTRUMENT_KALIMBA 0x6D
4683#define IMF_INSTRUMENT_BAG_PIPE 0x6E
4684#define IMF_INSTRUMENT_FIDDLE 0x6F
4685#define IMF_INSTRUMENT_SHANAI 0x70
4686#define IMF_INSTRUMENT_TINKLE_BELL 0x71
4687#define IMF_INSTRUMENT_AGOGO 0x72
4688#define IMF_INSTRUMENT_STEEL_DRUMS 0x73
4689#define IMF_INSTRUMENT_WOODBLOCK 0x74
4690#define IMF_INSTRUMENT_TAIKO_DRUM 0x75
4691#define IMF_INSTRUMENT_MELODIC_TOM 0x76
4692#define IMF_INSTRUMENT_SYNTH_DRUM 0x77
4693#define IMF_INSTRUMENT_REVERSE_CYMBAL 0x78
4694#define IMF_INSTRUMENT_GUITAR_FRET_NOISE 0x79
4695#define IMF_INSTRUMENT_BREATH_NOISE 0x7A
4696#define IMF_INSTRUMENT_SEASHORE 0x7B
4697#define IMF_INSTRUMENT_BIRD_TWEET 0x7C
4698#define IMF_INSTRUMENT_TELEPHONE_RING 0x7D
4699#define IMF_INSTRUMENT_HELICOPTER 0x7E
4700#define IMF_INSTRUMENT_APPLAUSE 0x7F
4701#define IMF_INSTRUMENT_GUNSHOT 0x80
4702
4703#define IMF_NOTE_C 0x00
4704#define IMF_NOTE_CH 0x01
4705#define IMF_NOTE_D 0x02
4706#define IMF_NOTE_DH 0x03
4707#define IMF_NOTE_E 0x04
4708#define IMF_NOTE_F 0x05
4709#define IMF_NOTE_FH 0x06
4710#define IMF_NOTE_G 0x07
4711#define IMF_NOTE_GH 0x08
4712#define IMF_NOTE_A 0x09
4713#define IMF_NOTE_AH 0x0A
4714#define IMF_NOTE_B 0x0B
4715#define IMF_NOTE_COUNT 0x0C
4716
4717#define IMF_OCTAVE_0 0x00
4718#define IMF_OCTAVE_1 0x01
4719#define IMF_OCTAVE_2 0x02
4720#define IMF_OCTAVE_3 0x03
4721#define IMF_OCTAVE_4 0x04
4722#define IMF_OCTAVE_5 0x05
4723#define IMF_OCTAVE_6 0x06
4724#define IMF_OCTAVE_7 0x07
4725#define IMF_OCTAVE_8 0x08
4726#define IMF_OCTAVE_9 0x09
4727
4728#define IMF_NOTE( o, n ) ( ( o ) * IMF_NOTE_COUNT + ( n ) )
4729
4730#define DOJO_CMD_PING 0x00
4731#define DOJO_CMD_CREATE_PORT 0x01
4732#define DOJO_CMD_OPEN_PORT 0x02
4733#define DOJO_CMD_SELECT_PORT 0x03
4734#define DOJO_CMD_PUT_MESSAGE 0x04
4735#define DOJO_CMD_PEEK_MESSAGE 0x05
4736#define DOJO_CMD_GET_MESSAGE 0x06
4737
4738
4739char * strtoupper( char * _string );
4740char * basename( char * _path );
4741char * strcopy( char * _dest, char * _source );
4742
4743#define BUILD_CHECK_FILETYPE(_environment, _filetype) \
4744 if ( _environment->outputFileType != _filetype ) { \
4745 CRITICAL_UNSUPPORTED_OUTPUT_FILE_TYPE( OUTPUT_FILE_TYPE_AS_STRING[_filetype] ); \
4746 }
4747
4748#define BUILD_SAFE_REMOVE(_environment, filename) \
4749 system_remove_safe( _environment, filename );
4750
4751#define BUILD_SAFE_MOVE( _environment, source, destination ) \
4752 system_move_safe( _environment, source, destination )
4753
4754#define BUILD_TOOLCHAIN_CC65_GET_EXECUTABLE( _environment, executableName ) \
4755 if ( _environment->compilerFileName ) { \
4756 sprintf( executableName, "%s", _environment->compilerFileName ); \
4757 } else if( access( "cc65\\bin\\cl65.exe", F_OK ) == 0 ) { \
4758 sprintf(executableName, "%s", "cc65\\bin\\cl65.exe" ); \
4759 } else if( access( "modules\\cc65\\bin\\cl65.exe", F_OK ) == 0 ) { \
4760 sprintf(executableName, "%s", "cc65\\bin\\cl65.exe" ); \
4761 } else if( access( "..\\modules\\cc65\\bin\\cl65.exe", F_OK ) == 0 ) { \
4762 sprintf(executableName, "%s", "..\\modules\\cc65\\bin\\cl65.exe" ); \
4763 } else if( access( "cc65/bin/cl65", F_OK ) == 0 ) { \
4764 sprintf(executableName, "%s", "cc65/bin/cl65" ); \
4765 } else if( access( "modules//cc65/bin/cl65", F_OK ) == 0 ) { \
4766 sprintf(executableName, "%s", "modules/cc65/bin/cl65" ); \
4767 } else if( access( "../modules//cc65/bin/cl65", F_OK ) == 0 ) { \
4768 sprintf(executableName, "%s", "../modules/cc65/bin/cl65" ); \
4769 } else { \
4770 sprintf(executableName, "%s", "cl65" ); \
4771 }
4772
4773#define BUILD_TOOLCHAIN_CC65_GET_LISTING_FILE( _environment, listingFileName ) \
4774 memset( listingFileName, 0, MAX_TEMPORARY_STORAGE ); \
4775 if ( _environment->listingFileName ) { \
4776 sprintf( listingFileName, "-l \"%s\"", _environment->listingFileName ); \
4777 } else { \
4778 strcopy( listingFileName, "" ); \
4779 }
4780
4781#define BUILD_TOOLCHAIN_CC65_EXEC( _environment, target, executableName, listingFileName, additionalParameters ) \
4782 sprintf( commandLine, "\"%s\" %s -o \"%s\" %s -C \"%s\" \"%s\"", \
4783 executableName, \
4784 listingFileName, \
4785 _environment->exeFileName, \
4786 additionalParameters, \
4787 _environment->configurationFileName, \
4788 _environment->asmFileName ); \
4789 if ( system_call( _environment, commandLine ) ) { \
4790 printf("The compilation of assembly program failed.\n\n"); \
4791 printf("Please check if %s is correctly installed.\n\n", executableName); \
4792 printf("For more info, please visit: https://ugbasic.iwashere.eu/install.\n\n"); \
4793 };
4794
4795#define BUILD_TOOLCHAIN_Z88DK_GET_EXECUTABLE_Z80ASM( _environment, executableName ) \
4796 if ( _environment->compilerFileName ) { \
4797 sprintf( executableName, "%s", _environment->compilerFileName ); \
4798 } else if( access( "modules\\z88dk\\src\\z80asm\\z88dk-z80asm.exe", F_OK ) == 0 ) { \
4799 sprintf(executableName, "%s", "..\\modules\\z88dk\\src\\z80asm\\z88dk-z80asm.exe" ); \
4800 } else if( access( "..\\modules\\z88dk\\src\\z80asm\\z88dk-z80asm.exe", F_OK ) == 0 ) { \
4801 sprintf(executableName, "%s", "..\\modules\\z88dk\\src\\z80asm\\z88dk-z80asm.exe" ); \
4802 } else if( access( "modules/z88dk/src/z80asm/z88dk-z80asm", F_OK ) == 0 ) { \
4803 sprintf(executableName, "%s", "../modules/z88dk/src/z80asm/z88dk-z80asm" ); \
4804 } else if( access( "../modules/z88dk/src/z80asm/z88dk-z80asm", F_OK ) == 0 ) { \
4805 sprintf(executableName, "%s", "../modules/z88dk/src/z80asm/z88dk-z80asm" ); \
4806 } else { \
4807 sprintf(executableName, "%s", "z88dk-z80asm" ); \
4808 }
4809
4810#define BUILD_TOOLCHAIN_Z88DK_GET_LISTING_FILE( _environment, listingFileName ) \
4811 (void) listingFileName; \
4812 if ( _environment->listingFileName ) { \
4813 sprintf( listingFileName, "-l -m -s -g" ); /* -m -s -g */ \
4814 } else { \
4815 strcopy( listingFileName, "-m -s -g" ); \
4816 }
4817
4818#define BUILD_TOOLCHAIN_Z88DK_EXEC( _environment, target, executableName, listingFileName, cpu ) \
4819 sprintf( commandLine, "\"%s\" -m=%s %s -D__%s__ -b \"%s\"", \
4820 executableName, \
4821 cpu, \
4822 listingFileName, \
4823 target, \
4824 _environment->asmFileName ); \
4825 if ( system_call( _environment, commandLine ) ) { \
4826 printf("The compilation of assembly program failed.\n\n"); \
4827 printf("Please check if %s is correctly installed.\n\n", executableName); \
4828 printf("For more info, please visit: https://ugbasic.iwashere.eu/install.\n\n"); \
4829 return; \
4830 }; \
4831 if ( _environment->listingFileName ) { \
4832 char * p = strdup( _environment->asmFileName ); \
4833 char * q = strchr( p, '.' ); \
4834 if ( q ) { \
4835 strcopy( q, ".lis" ); \
4836 } \
4837 BUILD_SAFE_MOVE( _environment, p, _environment->listingFileName ); \
4838 }
4839
4840#define BUILD_TOOLCHAIN_Z88DK_GET_EXECUTABLE_APPMAKE( _environment, executableName ) \
4841 if ( _environment->appMakerFileName ) { \
4842 sprintf( executableName, "%s", _environment->appMakerFileName ); \
4843 } else if( access( "modules\\z88dk\\src\\appmake\\z88dk-appmake.exe", F_OK ) == 0 ) { \
4844 sprintf(executableName, "%s", "..\\modules\\z88dk\\src\\appmake\\z88dk-appmake.exe" ); \
4845 } else if( access( "..\\modules\\z88dk\\src\\appmake\\z88dk-appmake.exe", F_OK ) == 0 ) { \
4846 sprintf(executableName, "%s", "..\\modules\\z88dk\\src\\appmake\\z88dk-appmake.exe" ); \
4847 } else if( access( "modules/z88dk/src/appmake/z88dk-appmake", F_OK ) == 0 ) { \
4848 sprintf(executableName, "%s", "../modules/z88dk/src/appmake/z88dk-appmake" ); \
4849 } else if( access( "../modules/z88dk/src/appmake/z88dk-appmake", F_OK ) == 0 ) { \
4850 sprintf(executableName, "%s", "../modules/z88dk/src/appmake/z88dk-appmake" ); \
4851 } else { \
4852 sprintf(executableName, "%s", "z88dk-appmake" ); \
4853 }
4854
4855#define BUILD_TOOLCHAIN_ASM6809_GET_EXECUTABLE( _environment, executableName ) \
4856 if ( _environment->compilerFileName ) { \
4857 sprintf(executableName, "%s", _environment->compilerFileName ); \
4858 } else if( access( "modules\\asm6809\\src\\asm6809.exe", F_OK ) == 0 ) { \
4859 sprintf(executableName, "%s", "modules\\asm6809\\src\\asm6809.exe" ); \
4860 } else if( access( "..\\modules\\asm6809\\src\\asm6809.exe", F_OK ) == 0 ) { \
4861 sprintf(executableName, "%s", "..\\modules\\asm6809\\src\\asm6809.exe" ); \
4862 } else if( access( "modules/asm6809/src/asm6809", F_OK ) == 0 ) { \
4863 sprintf(executableName, "%s", "modules/asm6809/src/asm6809" ); \
4864 } else if( access( "../modules/asm6809/src/asm6809", F_OK ) == 0 ) { \
4865 sprintf(executableName, "%s", "../modules/asm6809/src/asm6809" ); \
4866 } else if( access( "asm6809\\bin\\asm6809.exe", F_OK ) == 0 ) { \
4867 sprintf(executableName, "%s", "asm6809\\bin\\asm6809.exe" ); \
4868 } else { \
4869 sprintf(executableName, "%s", "asm6809" ); \
4870 }
4871
4872#define BUILD_TOOLCHAIN_ASM6809_GET_LISTING_FILE( _environment, listingFileName ) \
4873 memset( listingFileName, 0, MAX_TEMPORARY_STORAGE ); \
4874 if ( _environment->listingFileName ) { \
4875 sprintf( listingFileName, "-l \"%s\"", _environment->listingFileName ); \
4876 } else { \
4877 strcopy( listingFileName, "" ); \
4878 }
4879
4880#define BUILD_TOOLCHAIN_ASM6809EXEC( _environment, flag, startingAddress, executableName, listingFileName ) \
4881 sprintf( commandLine, "\"%s\" %s -o \"%s\" %s -e %d \"%s\"", \
4882 executableName, \
4883 listingFileName, \
4884 _environment->exeFileName, \
4885 flag, \
4886 startingAddress, \
4887 _environment->asmFileName ); \
4888 if ( system_call( _environment, commandLine ) ) { \
4889 printf("The compilation of assembly program failed.\n\n"); \
4890 printf("Please check if %s is correctly installed.\n\n", executableName); \
4891 printf("For more informations, please visit: https://ugbasic.iwashere.eu/install.\n\n"); \
4892 };
4893
4894#define BUILD_TOOLCHAIN_DECB_GET_EXECUTABLE( _environment, executableName ) \
4895 if ( _environment->decbFileName ) { \
4896 sprintf(executableName, "%s", _environment->decbFileName ); \
4897 } else if( access( "modules\\toolshed\\build\\unix\\decb\\decb.exe", F_OK ) == 0 ) { \
4898 sprintf(executableName, "%s", "modules\\toolshed\\build\\unix\\decb\\decb.exe" ); \
4899 } else if( access( "modules/toolshed/build/unix/decb/decb", F_OK ) == 0 ) { \
4900 sprintf(executableName, "%s", "modules/toolshed/build/unix/decb/decb" ); \
4901 } else if( access( "..\\modules\\toolshed\\build\\unix\\decb\\decb.exe", F_OK ) == 0 ) { \
4902 sprintf(executableName, "%s", "..\\modules\\toolshed\\build\\unix\\decb\\decb.exe" ); \
4903 } else if( access( "../modules/toolshed/build/unix/decb/decb", F_OK ) == 0 ) { \
4904 sprintf(executableName, "%s", "../modules/toolshed/build/unix/decb/decb" ); \
4905 } else { \
4906 sprintf(executableName, "%s", "decb" ); \
4907 }
4908
4909#define BUILD_TOOLCHAIN_DECB( _environment, executableName, binaryFileName ) \
4910 sprintf( commandLine, "\"%s\" dskini \"%s\"", \
4911 executableName, \
4912 _environment->exeFileName ); \
4913 if ( system_call( _environment, commandLine ) ) { \
4914 printf("The compilation of assembly program failed.\n\n"); \
4915 printf("Please check if %s is correctly installed.\n\n", executableName); \
4916 printf("For more informations, please visit: https://ugbasic.iwashere.eu/install.\n\n"); \
4917 }; \
4918 sprintf( commandLine, "\"%s\" copy -2 \"%s\" \"%s,%s\"", \
4919 executableName, \
4920 binaryFileName, \
4921 _environment->exeFileName, \
4922 strtoupper( basename( binaryFileName ) ) ); \
4923 if ( system_call( _environment, commandLine ) ) { \
4924 printf("The compilation of assembly program failed.\n\n"); \
4925 printf("Please check if %s is correctly installed.\n\n", executableName); \
4926 printf("For more informations, please visit: https://ugbasic.iwashere.eu/install.\n\n"); \
4927 };
4928
4929#define BUILD_TOOLCHAIN_DIR2ATR_GET_EXECUTABLE( _environment, executableName ) { \
4930 if ( _environment->dir2atrFileName ) { \
4931 sprintf(executableName, "%s", _environment->dir2atrFileName ); \
4932 } else if( access( "..\\modules\\atarisio\\tools\\dir2atr.exe", F_OK ) == 0 ) { \
4933 sprintf(executableName, "%s", "..\\modules\\atarisio\\tools\\dir2atr.exe" ); \
4934 } else if( access( "../modules/atarisio/tools/dir2atr", F_OK ) == 0 ) { \
4935 sprintf(executableName, "%s", "../modules/atarisio/tools/dir2atr" ); \
4936 } else if( access( "modules\\atarisio\\tools\\dir2atr.exe", F_OK ) == 0 ) { \
4937 sprintf(executableName, "%s", "modules\\atarisio\\tools\\dir2atr.exe" ); \
4938 } else if( access( "modules/atarisio/tools/dir2atr", F_OK ) == 0 ) { \
4939 sprintf(executableName, "%s", "modules/atarisio/tools/dir2atr" ); \
4940 } else { \
4941 sprintf(executableName, "%s", "dir2atr" ); \
4942 } \
4943}
4944
4945#define BUILD_TOOLCHAIN_DSKTOOLS_GET_EXECUTABLE( _environment, executableName ) { \
4946 if ( _environment->dsktoolsFileName ) { \
4947 sprintf(executableName, "%s", _environment->dsktoolsFileName ); \
4948 } else if( access( "..\\modules\\dsktools\\bin\\cptodsk.exe", F_OK ) == 0 ) { \
4949 sprintf(executableName, "%s", "..\\ugbasic\\modules\\dsktools\\bin\\cptodsk.exe" ); \
4950 } else if( access( "../modules/dsktools/bin/cptodsk", F_OK ) == 0 ) { \
4951 sprintf(executableName, "%s", "../modules/dsktools/bin/cptodsk" ); \
4952 } else if( access( "modules\\dsktools\\bin\\cptodsk.exe", F_OK ) == 0 ) { \
4953 sprintf(executableName, "%s", "modules\\dsktools\\bin\\cptodsk.exe" ); \
4954 } else if( access( "modules/dsktools/bin/cptodsk", F_OK ) == 0 ) { \
4955 sprintf(executableName, "%s", "modules/dsktools/bin/cptodsk" ); \
4956 } else { \
4957 sprintf(executableName, "%s", "cptodsk" ); \
4958 } \
4959}
4960
4961#define BUILD_TOOLCHAIN_DIR2ATR( _environment, executableName, bootCodePath, contentPath, atrFileName, pipes ) \
4962 { \
4963 int pathSeparatorChanged = 0; \
4964 if ( contentPath[strlen(contentPath)-1] == PATH_SEPARATOR ) { \
4965 contentPath[strlen(contentPath)-1] = 0; \
4966 pathSeparatorChanged = 1; \
4967 } \
4968 sprintf( commandLine, "\"%s\" -S -p -B \"%s\" \"%s\" \"%s\" %s", \
4969 executableName, \
4970 bootCodePath, \
4971 atrFileName, \
4972 contentPath, \
4973 pipes \
4974 ); \
4975 if ( system_call( _environment, commandLine ) ) { \
4976 printf("The compilation of assembly program failed.\n\n"); \
4977 printf("Please check if %s is correctly installed.\n\n", executableName); \
4978 printf("For more informations, please visit: https://ugbasic.iwashere.eu/install.\n\n"); \
4979 }; \
4980 if ( pathSeparatorChanged ) { \
4981 contentPath[strlen(contentPath)] = PATH_SEPARATOR; \
4982 } \
4983 }
4984
4985#define BUILD_TOOLCHAIN_ASXV5PXX_GET_EXECUTABLE_AS61860( _environment, executableName ) \
4986 if ( _environment->compilerFileName ) { \
4987 sprintf( executableName, "%s", _environment->compilerFileName ); \
4988 } else if( access( "modules\\asxv5pxx\\asxmak\\linux\\exe\\as61860.exe", F_OK ) == 0 ) { \
4989 sprintf(executableName, "%s", "modules\\asxv5pxx\\asxmak\\linux\\exe\\as61860.exe" ); \
4990 } else if( access( "..\\modules\\asxv5pxx\\asxmak\\linux\\exe\\as61860.exe", F_OK ) == 0 ) { \
4991 sprintf(executableName, "%s", "..\\modules\\asxv5pxx\\asxmak\\linux\\exe\\as61860.exe" ); \
4992 } else if( access( "modules/asxv5pxx/asxmak/linux/exe/as61860", F_OK ) == 0 ) { \
4993 sprintf(executableName, "%s", "modules/asxv5pxx/asxmak/linux/exe/as61860" ); \
4994 } else if( access( "../modules/asxv5pxx/asxmak/linux/exe/as61860", F_OK ) == 0 ) { \
4995 sprintf(executableName, "%s", "../modules/asxv5pxx/asxmak/linux/exe/as61860" ); \
4996 } else { \
4997 sprintf(executableName, "%s", "as61860" ); \
4998 }
4999
5000#define BUILD_TOOLCHAIN_ASXV5PXX_EXEC( _environment, target, executableName ) \
5001 sprintf( commandLine, "\"%s\" -gloaxsff \"%s\"", \
5002 executableName, \
5003 _environment->asmFileName ); \
5004 if ( system_call( _environment, commandLine ) ) { \
5005 printf("The compilation of assembly program failed.\n\n"); \
5006 printf("Please check if %s is correctly installed.\n\n", executableName); \
5007 printf("For more info, please visit: https://ugbasic.iwashere.eu/install.\n\n"); \
5008 return; \
5009 }; \
5010 if ( _environment->listingFileName ) { \
5011 char * p = strdup( _environment->asmFileName ); \
5012 char * q = strchr( p, '.' ); \
5013 if ( q ) { \
5014 strcopy( q, ".lst" ); \
5015 } \
5016 BUILD_SAFE_MOVE( _environment, p, _environment->listingFileName ); \
5017 }
5018
5019#define BUILD_TOOLCHAIN_ASXV5PXX_GET_EXECUTABLE_ASLINK( _environment, executableName ) \
5020 if ( _environment->asLinkerFileName ) { \
5021 sprintf( executableName, "%s", _environment->asLinkerFileName ); \
5022 } else if( access( "modules\\asxv5pxx\\asxmak\\linux\\exe\\aslink.exe", F_OK ) == 0 ) { \
5023 sprintf(executableName, "%s", "modules\\asxv5pxx\\asxmak\\linux\\exe\\aslink.exe" ); \
5024 } else if( access( "..\\modules\\asxv5pxx\\asxmak\\linux\\exe\\aslink.exe", F_OK ) == 0 ) { \
5025 sprintf(executableName, "%s", "..\\modules\\asxv5pxx\\asxmak\\linux\\exe\\aslink.exe" ); \
5026 } else if( access( "modules/asxv5pxx/asxmak/linux/exe/aslink", F_OK ) == 0 ) { \
5027 sprintf(executableName, "%s", "modules/asxv5pxx/asxmak/linux/exe/aslink" ); \
5028 } else if( access( "../modules/asxv5pxx/asxmak/linux/exe/aslink", F_OK ) == 0 ) { \
5029 sprintf(executableName, "%s", "../modules/asxv5pxx/asxmak/linux/exe/aslink" ); \
5030 } else { \
5031 sprintf(executableName, "%s", "aslink" ); \
5032 }
5033
5034#define BUILD_TOOLCHAIN_NASM_GET_EXECUTABLE( _environment, executableName ) \
5035 if ( _environment->compilerFileName ) { \
5036 sprintf( executableName, "%s", _environment->compilerFileName ); \
5037 } else if( access( "modules\\nasm\\nasm.exe", F_OK ) == 0 ) { \
5038 sprintf(executableName, "%s", "modules\\nasm\\nasm.exe" ); \
5039 } else if( access( "..\\modules\\nasm\\nasm.exe", F_OK ) == 0 ) { \
5040 sprintf(executableName, "%s", "..\\modules\\nasm\\nasm.exe" ); \
5041 } else if( access( "modules/nasm/nasm", F_OK ) == 0 ) { \
5042 sprintf(executableName, "%s", "modules/nasm/nasm" ); \
5043 } else if( access( "../modules/nasm/nasm", F_OK ) == 0 ) { \
5044 sprintf(executableName, "%s", "../modules/nasm/nasm" ); \
5045 } else { \
5046 sprintf(executableName, "%s", "nasm" ); \
5047 }
5048
5049#define BUILD_TOOLCHAIN_NASM_GET_LISTING_FILE( _environment, listingFileName ) \
5050 memset( listingFileName, 0, MAX_TEMPORARY_STORAGE ); \
5051 if ( _environment->listingFileName ) { \
5052 sprintf( listingFileName, "-l \"%s\"", _environment->listingFileName ); \
5053 } else { \
5054 strcopy( listingFileName, "" ); \
5055 }
5056
5057#define BUILD_TOOLCHAIN_NASM_EXEC( _environment, target, executableName, listingFileName, cpu ) \
5058 sprintf( commandLine, "\"%s\" -f bin \"%s\" -o \"%s\" %s", \
5059 executableName, \
5060 _environment->asmFileName, \
5061 _environment->exeFileName, \
5062 listingFileName ); \
5063 if ( system_call( _environment, commandLine ) ) { \
5064 printf("The compilation of assembly program failed.\n\n"); \
5065 printf("Please check if %s is correctly installed.\n\n", executableName); \
5066 printf("For more info, please visit: https://ugbasic.iwashere.eu/install.\n\n"); \
5067 return; \
5068 }; \
5069 if ( _environment->listingFileName ) { \
5070 char * p = strdup( _environment->asmFileName ); \
5071 char * q = strchr( p, '.' ); \
5072 if ( q ) { \
5073 strcopy( q, ".lis" ); \
5074 } \
5075 BUILD_SAFE_MOVE( _environment, p, _environment->listingFileName ); \
5076 }
5077
5078void show_usage_and_exit( int _argc, char *_argv[] );
5079
5080char * import_file_name( char * _import_path );
5081
5083void environment_setup_embedded( Environment *_environment );
5084void environment_setup_default( Environment * _environment );
5085void environment_parse_command_line( Environment * _environment, int _argc, char * _argv[] );
5086void environment_setup_10liner( Environment * _environment );
5087void environment_setup_retrohack( Environment * _environment );
5088
5089void begin_compilation( Environment * _environment );
5090void target_initialization( Environment *_environment );
5091void shell_injection( Environment * _environment );
5092void target_prepare_finalization( Environment * _environment );
5093void target_finalization( Environment * _environment );
5094void target_analysis( Environment * _environment );
5095void target_deep_analyzer( Environment * _environment );
5096void end_compilation( Environment * _environment );
5097void target_peephole_optimizer( Environment * _environment );
5098void begin_build( Environment * _environment );
5099void target_linkage( Environment *_environment );
5100void target_finalize( Environment * _environment );
5101void target_cleanup( Environment *_environment );
5102void end_build( Environment * _environment );
5103void bank_cleanup( Environment * _environment );
5104void gameloop_cleanup( Environment * _environment );
5105void linker_cleanup( Environment * _environment );
5106void linker_setup( Environment * _environment );
5107int pattern_match( char * _pattern, char * _value );
5108void setup_text_variables( Environment * _environment );
5109void finalize_text_variables( Environment * _environment );
5110ScreenMode * find_screen_mode_by_suggestion( Environment * _environment, int _bitmap, int _width, int _height, int _colors, int _tile_width, int _tile_height );
5111ScreenMode * find_screen_mode_by_id( Environment * _environment, int _id );
5112int count_screen_mode_selected( Environment * _environment );
5113int reset_screen_mode_selected( Environment * _environment );
5114Bank * bank_find( Bank * _first, char * _name );
5115
5116Type * type_find( Type * _first, char * _name );
5117Field * field_find( Type * _type, char * _name );
5118
5119CopperList * find_copper_list( Environment * _environment, char * _name );
5120
5121int check_datatype_limits( VariableType _type, int _value );
5122
5124
5125int define_audio_target_check( Environment * _environment, int _value );
5126
5127void console_init( Environment * _environment );
5128void console_calculate( Environment * _environment );
5129void console_calculate_vars( Environment * _environment );
5130
5131void banks_init( Environment * _environment );
5132void banks_init_extended( Environment * _environment, int * _allowed, int _allowed_count, int _allowed_size );
5133char * banks_get_address( Environment * _environment, int _bank );
5134Variable * banks_get_address_var( Environment * _environment, char * _bank );
5135int banks_store( Environment * _environment, Variable * _variable, int _resident );
5136int banks_store_data( Environment * _environment, char * _data, int _size );
5137int banks_any_used( Environment * _environment );
5138void banks_generate( Environment * _environment );
5139int banks_get_default_resident( Environment * _environment, int _bank );
5140
5141void vars_emit_constant_integer( Environment * _environment, char * _name, int _value );
5142void vars_emit_constants( Environment * _environment );
5143void vars_emit_strips( Environment * _environment, char * _name, Strip * _strips );
5144
5145char * file_read_csv( Environment * _Environment, char * _filename, VariableType _type, int * _size, int * _count );
5146
5147#define FUNCTION_STUB( t ) Variable * result = variable_temporary( _environment, t, "(stub)" ); return result;
5148
5150POBuffer po_buf_new( int size );
5151POBuffer po_buf_cat(POBuffer buf, char *string);
5152POBuffer po_buf_cpy(POBuffer buf, char *string);
5153POBuffer po_buf_add(POBuffer buf, char c);
5154POBuffer po_buf_vprintf(POBuffer buf, const char *fmt, va_list ap);
5155POBuffer po_buf_printf(POBuffer buf, const char *fmt, ...);
5156POBuffer po_buf_fgets(POBuffer buf, FILE *f);
5157int po_buf_trim(POBuffer buf);
5158int po_buf_cmp(POBuffer a, POBuffer b);
5159POBuffer tmp_buf(void *key1, unsigned int key2);
5160void tmp_buf_clr(void *key1);
5161POBuffer po_buf_match(POBuffer _buf, const char *_pattern, ...);
5162int po_buf_strcmp(POBuffer _s, POBuffer _t);
5163int po_buf_is_hex(POBuffer _s);
5164
5165void po_var_init( );
5166POVariable * po_var_register( char * _name );
5167POVariable * po_var_find( char * _name );
5168POVariable * po_var_lookup( char * _name );
5169
5170#define TMP_BUF tmp_buf(__FILE__, __LINE__)
5171#define TMP_BUF_CLR tmp_buf_clr(__FILE__)
5172
5173ImageDescriptor * image_descriptor_create( Environment * _environment, char * _filename, int _flags );
5179
5180AtlasDescriptor * atlas_descriptor_create( Environment * _environment, char * _filename, int _flags, int _image_origin_x, int _image_origin_y, int _frame_width, int _frame_height, int _frame_offset_x, int _frame_offset_y );
5181
5182int file_get_size( Environment * _environment, char * _filename );
5184char * find_last_path_separator( char * _path );
5185char * generate_storage_filename( Environment * _environment, char * _prefix, char * _suffix, int _number );
5186int system_move_safe( Environment * _environment, char * _source, char * _destination );
5187int system_remove_safe( Environment * _environment, char * _filename );
5188
5189int show_troubleshooting_and_exit( Environment * _environment, int _argc, char * _argv[] );
5190
5191//----------------------------------------------------------------------------
5192// Common functions used by parser only
5193//----------------------------------------------------------------------------
5194
5195//----------------------------------------------------------------------------
5196// Array
5197//----------------------------------------------------------------------------
5198
5199void parser_array_init( Environment * _environment );
5200void parser_array_init_by( Environment * _environment, ArrayReference * _array_reference );
5201void parser_array_index_symbolic( Environment * _environment, char * _index );
5202void parser_array_index_numeric( Environment * _environment, int _index );
5203void parser_array_cleanup( Environment * _environment );
5205
5206//----------------------------------------------------------------------------
5207// Other
5208//----------------------------------------------------------------------------
5209
5210Variable * parser_adapted_numeric( Environment * _environment, int _number );
5211Variable * parser_casted_numeric( Environment * _environment, VariableType _type, int _number );
5212Variable * variable_by_constant( Environment * _environment, VariableType _type, int _value );
5213
5214//----------------------------------------------------------------------------
5215// Common accessibile functions used by language and parser
5216//----------------------------------------------------------------------------
5217
5218//----------------------------------------------------------------------------
5219// *A*
5220//----------------------------------------------------------------------------
5221
5222Variable * absolute( Environment * _environment, char * _value );
5223void add_complex( Environment * _environment, char * _variable, int _expression, int _limit_lower, int _limit_upper, int _clamp );
5224void add_complex_type( Environment * _environment, char * _variable, char * _field, int _expression, int _limit_lower, int _limit_upper, int _clamp );
5225void add_complex_vars( Environment * _environment, char * _variable, char * _expression, char * _limit_lower, char * _limit_upper, int _clamp );
5226void add_complex_type_vars( Environment * _environment, char * _variable, char * _field, char * _expression, char * _limit_lower, char * _limit_upper, int _clamp );
5227void add_complex_array( Environment * _environment, char * _variable, char * _expression, char * _limit_lower, char * _limit_upper, int _clamp );
5228void add_complex_array_type( Environment * _environment, char * _variable, char * _field, char * _expression, char * _limit_lower, char * _limit_upper, int _clamp );
5229void add_complex_mt( Environment * _environment, char * _variable, char * _expression, char * _limit_lower, char * _limit_upper, int _clamp );
5230char * address_displacement( Environment * _environment, char * _address, char * _displacement );
5231void allow( Environment * _environment );
5232void animate_semivars( Environment * _environment, char * _prefix, char * _anim, char * _x, char * _y );
5233Variable * animating( Environment * _environment, char * _prefix, char * _animation );
5234void animation( Environment * _environment, char * _identifier, char * _atlas, char * _prefix, char * _next );
5235Variable * asciicode( Environment * _environment );
5236
5237//----------------------------------------------------------------------------
5238// *B*
5239//----------------------------------------------------------------------------
5240
5241void back( Environment * _environment, char * _color );
5242Bank * bank_define( Environment * _environment, char * _name, BankType _type, int _address, char * _filename );
5243Variable * bank_get( Environment * _environment );
5244Variable * bank_get_address( Environment * _environment, int _bank );
5245Variable * bank_get_address_var( Environment * _environment, char * _bank );
5246Variable * bank_get_size( Environment * _environment, int _bank );
5247Variable * bank_get_size_var( Environment * _environment, char * _bank );
5248Variable * bank_get_count( Environment * _environment );
5249void bank_read_semi_var( Environment * _environment, int _bank, int _address1, char * _address2, int _size );
5250void bank_read_vars( Environment * _environment, char * _bank, char * _address1, char * _address2, char * _size );
5251void bank_read_vars_direct( Environment * _environment, char * _bank, char * _address1, char * _address2, char * _size );
5252void bank_read_vars_direct_size( Environment * _environment, char * _bank, char * _address1, char * _address2, int _size );
5253void bank_read_vars_bank_direct_size( Environment * _environment, int _bank, char * _address1, char * _address2, int _size );
5254void bank_read_vars_bank_direct_size_vars( Environment * _environment, int _bank, char * _address1, char * _address2, int _size );
5255void bank_uncompress_semi_var( Environment * _environment, int _bank, int _address1, char * _address2 );
5256void bank_uncompress_vars( Environment * _environment, char * _bank, char * _address1, char * _address2 );
5257void bank_set( Environment * _environment, int _bank );
5258void bank_set_var( Environment * _environment, char * _bank );
5259void bank_write_vars( Environment * _environment, char * _bank, char * _address1, char * _address2, char * _size );
5260void bank_write_semi_var( Environment * _environment, char * _address2, int _bank, int _address1, int _size );
5261void bank_write_vars_direct( Environment * _environment, char * _bank, char * _address1, char * _address2, char * _size );
5262void bank_write_vars_bank_direct_size( Environment * _environment, char * _address1, int _bank, char * _address2, int _size );
5263void bar( Environment * _environment, char * _x0, char * _y0, char * _x1, char * _y1, char * _c, int _preserve_color );
5264void begin_copper( Environment * _environment, char * _name );
5265void begin_for_prepare( Environment * _environment, char * _index );
5266void begin_for_from_prepare( Environment * _environment );
5267void begin_for_from_assign( Environment * _environment, char * _from );
5268void begin_for_to_prepare( Environment * _environment );
5269void begin_for_to_assign( Environment * _environment, char * _to );
5270void begin_for_step_prepare( Environment * _environment );
5271void begin_for_step_assign( Environment * _environment, char * _step );
5272void begin_for_identifier( Environment * _environment, char * _index );
5273
5274void begin_for_prepare_mt( Environment * _environment, char * _index );
5275void begin_for_from_prepare_mt( Environment * _environment );
5276void begin_for_from_assign_mt( Environment * _environment, char * _from );
5277void begin_for_to_prepare_mt( Environment * _environment );
5278void begin_for_to_assign_mt( Environment * _environment, char * _to );
5279void begin_for_step_prepare_mt( Environment * _environment );
5280void begin_for_step_assign_mt( Environment * _environment, char * _step );
5281void begin_for_identifier_mt( Environment * _environment, char * _index );
5282
5283void begin_for( Environment * _environment, char * _index, char * _from, char * _to );
5284void begin_for_from( Environment * _environment, char * _index, char * _from, char * _to, char * _step );
5285void begin_for_from_mt( Environment * _environment, char * _index, char * _from, char * _to, char * _step );
5286void begin_for_identifier( Environment * _environment, char * _index );
5287void begin_for_identifier_mt( Environment * _environment, char * _index );
5288void begin_for_mt( Environment * _environment, char * _index, char * _from, char * _to );
5289void begin_for_mt_step( Environment * _environment, char * _index, char * _from, char * _to, char * _step );
5290void begin_for_step( Environment * _environment, char * _index, char * _from, char * _to, char * _step );
5291void begin_for_to( Environment * _environment, char *_to );
5292void begin_for_to_prepare( Environment * _environment );
5293void begin_for_to_mt( Environment * _environment, char *_to );
5294void begin_gameloop( Environment * _environment );
5295void begin_do_loop( Environment * _environment );
5296void begin_loop( Environment * _environment, int _do );
5297void begin_procedure( Environment * _environment, char * _name );
5298void begin_repeat( Environment * _environment );
5299void begin_storage( Environment * _environment, char * _name, char * _file_name );
5300void begin_type( Environment * _environment, char * _name );
5301void begin_while( Environment * _environment );
5302void begin_while_condition( Environment * _environment, char * _expression );
5303void bell( Environment * _environment, int _note, int _duration, int _channels );
5304void bell_vars( Environment * _environment, char * _note, char * _duration, char * _channels, int _sync );
5305void bitmap_at( Environment * _environment, int _address );
5306void bitmap_at_var( Environment * _environment, char * _address );
5307void bitmap_disable( Environment * _environment );
5308void bitmap_enable( Environment * _environment, int _width, int _height, int _colors );
5309void blit_define( Environment * _environment, char * _name, int _sop, int _mop, int _smop, int _iop, int _dop, int _idop, int _top );
5310void blit_define_begin_compound( Environment * _environment, char * _name );
5311void blit_define_compound_binary( Environment * _environment, int _operation, int _operand1, int _operand2, int _result );
5312void blit_define_compound_unary( Environment * _environment, int _operation, int _operand, int _result );
5313void blit_define_compound_operand_to_register( Environment * _environment, int _register, int _source );
5314void blit_define_end_compound( Environment * _environment, int _register );
5315void blit_image( Environment * _environment, char * _blit, char * _x, char * _y, char * _frame, char * _sequence, int _flags );
5316void boom( Environment * _environment, int _duration, int _channels );
5317void boom_var( Environment * _environment, char * _duration, char * _channels );
5318void bottom( Environment * _environment );
5319void box( Environment * _environment, char * _x1, char * _y1, char * _x2, char * _y2, char * _c, int _preserve_color );
5320Resource * build_resource_for_sequence( Environment * _environment, char * _image, char * _frame, char * _sequence );
5321
5322//----------------------------------------------------------------------------
5323// *C*
5324//----------------------------------------------------------------------------
5325
5327int calculate_exact_tile( TileDescriptor * _tile, TileDescriptors * _tiles );
5328int calculate_tile_affinity( TileDescriptor * _first, TileDescriptor * _second );
5330Variable * calculate_frame_by_type( Environment * _environment, TsxTileset * _tileset, char * _images, char * _description );
5331void call_procedure( Environment * _environment, char * _name );
5332void case_else( Environment * _environment );
5333void case_equals( Environment * _environment, int _value );
5334void case_equals_var( Environment * _environment, char * _value );
5335void case_equals_label( Environment * _environment );
5336void center( Environment * _environment, char * _string, int _newline, char * _width );
5337void cgoto( Environment * _environment, char * _expression );
5338void chain( Environment * _environment, char *_filename );
5339void char_at( Environment * _environment, char *_x, char *_y, char *_code, char *_type, char *_size );
5340void charset_at( Environment * _environment, int _value );
5341void charset_at_var( Environment * _environment, char * _value );
5342void charset_uppercase( Environment * _environment );
5343void charset_lowercase( Environment * _environment );
5344int check_if_filename_is_valid( Environment * _environment, char * _filename );
5345void circle( Environment * _environment, char * _x, char * _y, char * _r, char *_c, int _preserve_color );
5346void clear( Environment * _environment );
5347Variable * clear_key( Environment * _environment );
5348void cline( Environment * _environment, char * _characters );
5349void clip( Environment * _environment, char * _x1, char * _y1, char * _x2, char * _y2 );
5350void cls( Environment * _environment, char * _paper );
5351void cls_box( Environment * _environment, char * _x1, char * _y1, char * _w, char * _h );
5352void cmove( Environment * _environment, char * _dx, char * _dy );
5353void cmove_direct( Environment * _environment, int _dx, int _dy );
5354Variable * collision_to( Environment * _environment, int _sprite );
5355Variable * collision_to_vars( Environment * _environment, char * _sprite );
5356void color( Environment * _environment, int _index, int _shade );
5357Variable * color_get_vars( Environment * _environment, char * _index );
5358void color_semivars( Environment * _environment, int _index, char * _shade );
5359void color_vars( Environment * _environment, char * _index, char * _shade );
5360void color_background( Environment * _environment, int _index, int _background_color );
5361void color_background_vars( Environment * _environment, char * _index, char * _background_color );
5362void color_border( Environment * _environment, int _border_color );
5363void color_border_var( Environment * _environment, char * _border_color );
5364void color_sprite( Environment * _environment, int _index, int _color );
5365void color_sprite_semi_vars( Environment * _environment, int _index, char * _color );
5366void color_sprite_vars( Environment * _environment, char * _sprite, char * _color );
5367void color_tsb( Environment * _environment, char *_border, char *_background, char *_cursor );
5368void colormap_at( Environment * _environment, int _address );
5369void colormap_at_var( Environment * _environment, char * _address );
5370void colormap_clear( Environment * _environment );
5371void colormap_clear_with( Environment * _environment, int _foreground, int _background );
5372void colormap_clear_with_vars( Environment * _environment, char * _foreground, char * _background );
5373Variable * combine_nibble_vars( Environment * _environment, char * _low_byte, char * _high_byte );
5374void configure_set_value( Environment * _environment, int _name, int _parameter, int _value );
5375void configure_set_value_var( Environment * _environment, int _name, int _parameter, char * _value );
5376void console( Environment * _environment, int _x1, int _x2, int _x3, int _x4 );
5377void console_save( Environment * _environment, int _number );
5378void console_save_vars( Environment * _environment, char * _number );
5379void console_restore( Environment * _environment, int _number );
5380void console_restore_vars( Environment * _environment, char * _number );
5381void console_vars( Environment * _environment, char * _x1, char * _x2, char * _x3, char * _x4 );
5383Variable * console_tiles_get_width( Environment * _environment );
5384void const_define_numeric( Environment * _environment, char * _name, int _value );
5385void const_define_string( Environment * _environment, char * _name, char * _value );
5386void const_define_float( Environment * _environment, char * _name, double _value );
5387void const_emit( Environment * _environment, char * _name );
5388Constant * constant_create( Environment * _environment, char * _name );
5389Constant * constant_find( Environment * _environment, char * _name );
5390void copper_color( Environment * _environment, int _index, int _color );
5391void copper_color_background( Environment * _environment, int _color );
5392void copper_color_border( Environment * _environment, int _color );
5393void copper_nop( Environment * _environment );
5394void copper_wait( Environment * _environment, int _line );
5395void copper_move( Environment * _environment, int _address1, int _address2, VariableType _VariableType );
5396void copper_store( Environment * _environment, int _address, int _value, VariableType _VariableType );
5397void copper_use( Environment * _environment, char * _name );
5398void cpuspeed( Environment * _environment, char * _value );
5399Variable * create_path( Environment * _environment, char * _x0, char * _y0, char * _x1, char * _y1 );
5400Variable * create_vector( Environment * _environment, char * _x, char * _y );
5401Variable * csprite_init( Environment * _environment, char * _image, char * _sprite, int _flags );
5402void cset( Environment * _environment, char * _value );
5403
5404//----------------------------------------------------------------------------
5405// *D*
5406//----------------------------------------------------------------------------
5407
5408void data_numeric( Environment * _environment, int _value );
5409void data_floating( Environment * _environment, double _value );
5410DataSegment * data_segment_define( Environment * _environment, char * _name );
5411DataSegment * data_segment_define_numeric( Environment * _environment, int _number );
5412DataSegment * data_segment_find( Environment * _environment, char * _name );
5413DataSegment * data_segment_find_numeric( Environment * _environment, int _number );
5414DataSegment * data_segment_define_or_retrieve( Environment * _environment, char * _name );
5415DataSegment * data_segment_define_or_retrieve_numeric( Environment * _environment, int _number );
5416void data_string( Environment * _environment, char * _value );
5417void data_type( Environment * _environment );
5418void declare_procedure( Environment * _environment, char * _name, int _address, int _system );
5419Variable * decrypt( Environment * _environment, char * _data, char * _key, char * _var );
5420void defdgr_vars( Environment * _environment, char * _character, char * _b0, char * _b1, char * _b2, char * _b3, char * _b4, char * _b5, char * _b6, char * _b7 );
5421Variable * deserialize( Environment * _environment, char * _data, char * _key, char * _var );
5422Variable * distance( Environment * _environment, char * _x1, char * _y1, char * _x2, char * _y2 );
5423void dload( Environment * _environment, char * _filename, char * _offset, char * _address, char * _bank, char * _size );
5424void double_buffer( Environment * _environment, int _enabled );
5425void downw( Environment * _environment, char * _line, char * _column, char * _width, char * _height );
5426void downb( Environment * _environment, char * _line, char * _column, char * _width, char * _height );
5427void draw( Environment * _environment, char * _x0, char * _y0, char * _x1, char * _y1, char * _c, int _preserve_color );
5428void draw_tile_column( Environment * _environment, char * _tile, char * _x, char * _y1, char * _y2, char * _color );
5429void draw_tile_row( Environment * _environment, char * _tile, char * _y, char * _x1, char * _x2, char * _color );
5430void draw_string( Environment * _environment, char * _string );
5431void draw_tsb_string( Environment * _environment, char * _string, char * _x, char * _y, char * _c, int _preserve_color );
5432void dsave( Environment * _environment, char * _filename, char * _offset, char * _address, char * _size );
5434
5435void dojo_serial_init( Environment * _environment );
5436void dojo_serial_begin( Environment * _environment );
5437void dojo_serial_put_request0( Environment * _environment, int _command, char * _param1, char * _param2, char * _result );
5438void dojo_serial_put_request( Environment * _environment, int _command, char * _param1, char * _param2, char * _address, char * _size, char * _result );
5439void dojo_serial_put_requestd( Environment * _environment, int _command, char * _param1, char * _param2, char * _data, char * _size, char * _result );
5440void dojo_serial_put_requestds( Environment * _environment, int _command, char * _param1, char * _param2, char * _data, int _size, char * _result );
5441void dojo_serial_has_response( Environment * _environment, char * _result );
5442void dojo_serial_get_response0( Environment * _environment, char * _status );
5443void dojo_serial_get_response( Environment * _environment, char * _status, char * _data, char * _size );
5444void dojo_serial_get_responsed( Environment * _environment, char * _status, char * _data, char * _size );
5445void dojo_serial_get_response_size( Environment * _environment, char * _status, char * _size );
5446void dojo_serial_get_response_payload( Environment * _environment, char * _data );
5447void dojo_serial_get_response_payloadd( Environment * _environment, char * _address );
5448void dojo_serial_end( Environment * _environment );
5449
5450void dojo_fujinet_init( Environment * _environment );
5451void dojo_fujinet_begin( Environment * _environment );
5452void dojo_fujinet_put_request0( Environment * _environment, int _command, char * _param1, char * _param2, char * _result );
5453void dojo_fujinet_put_request( Environment * _environment, int _command, char * _param1, char * _param2, char * _address, char * _size, char * _result );
5454void dojo_fujinet_put_requestd( Environment * _environment, int _command, char * _param1, char * _param2, char * _data, char * _size, char * _result );
5455void dojo_fujinet_put_requestds( Environment * _environment, int _command, char * _param1, char * _param2, char * _data, int _size, char * _result );
5456void dojo_fujinet_partial( Environment * _environment );
5457void dojo_fujinet_has_response( Environment * _environment, char * _result );
5458void dojo_fujinet_get_response0( Environment * _environment, char * _status );
5459void dojo_fujinet_get_response( Environment * _environment, char * _status, char * _data, char * _size );
5460void dojo_fujinet_get_responsed( Environment * _environment, char * _status, char * _data, char * _size );
5461void dojo_fujinet_get_response_size( Environment * _environment, char * _status, char * _size );
5462void dojo_fujinet_get_response_payload( Environment * _environment, char * _data );
5463void dojo_fujinet_get_response_payloadd( Environment * _environment, char * _address );
5464void dojo_fujinet_end( Environment * _environment );
5465
5466void dojo_init( Environment * _environment );
5467void dojo_begin( Environment * _environment );
5468void dojo_put_request0( Environment * _environment, int _command, char * _param1, char * _param2, char * _result );
5469void dojo_put_request( Environment * _environment, int _command, char * _param1, char * _param2, char * _address, char * _size, char * _result );
5470void dojo_put_requestd( Environment * _environment, int _command, char * _param1, char * _param2, char * _data, char * _size, char * _result );
5471void dojo_put_requestds( Environment * _environment, int _command, char * _param1, char * _param2, char * _data, int _size, char * _result );
5472void dojo_partial( Environment * _environment );
5473void dojo_has_response( Environment * _environment, char * _result );
5474void dojo_get_response0( Environment * _environment, char * _status );
5475void dojo_get_response( Environment * _environment, char * _status, char * _address, char * _size );
5476void dojo_get_responsed( Environment * _environment, char * _status, char * _data, char * _size );
5477void dojo_get_response_size( Environment * _environment, char * _status, char * _size );
5478void dojo_get_response_payload( Environment * _environment, char * _address );
5479void dojo_get_response_payloadd( Environment * _environment, char * _data );
5480void dojo_end( Environment * _environment );
5481
5482Variable * dojo_ping( Environment * _environment, char * _param1, char * _param2 );
5483Variable * dojo_create_port( Environment * _environment );
5484Variable * dojo_open_port( Environment * _environment, char * _name );
5485Variable * dojo_put_message( Environment * _environment, char * _port, char * _channel, char * _message );
5486Variable * dojo_error( Environment * _environment );
5487Variable * dojo_peek_message( Environment * _environment, char * _port, char * _channel );
5488Variable * dojo_get_message( Environment * _environment, char * _port, char * _channel );
5489void dojo_get_message_inplace( Environment * _environment, char * _port, char * _channel, char * _variable );
5490
5491//----------------------------------------------------------------------------
5492// *E*
5493//----------------------------------------------------------------------------
5494
5495void ellipse( Environment * _environment, char * _x, char * _y, char * _rx, char * _ry, char * _c, int _preserve_color );
5496void else_if_then( Environment * _environment, char * _expression );
5497void else_if_then_label( Environment * _environment );
5498Variable * encrypt( Environment * _environment, char * _data, char * _key );
5499void end( Environment * _environment );
5500void end_copper( Environment * _environment );
5501void end_for( Environment * _environment );
5502void end_for_identifier( Environment * _environment, char * _identifier );
5503void end_gameloop( Environment * _environment );
5504void end_if_then( Environment * _environment );
5505void end_do_loop( Environment * _environment );
5506void end_loop( Environment * _environment, int _do );
5507void end_loop_until( Environment * _environment, char * _expr );
5508void end_loop_while( Environment * _environment, char * _expr );
5509void end_procedure( Environment * _environment, char * _value );
5510void end_repeat( Environment * _environment );
5511void end_repeat_condition( Environment * _environment, char * _expression );
5512void end_select_case( Environment * _environment );
5513void end_storage( Environment * _environment );
5514void end_type( Environment * _environment );
5515void end_while( Environment * _environment );
5516void envelope( Environment * _environment, char * _voice, char * _attack, char * _decay, char * _sustain, char * _release );
5517void error( Environment * _environment, char * _message );
5518char * escape_newlines( char * _string );
5519char * escape_newlines_full( char * _string, int _size );
5520void every_cleanup( Environment * _environment );
5521void every_off( Environment * _environment, char * _timer );
5522void every_on( Environment * _environment, char * _timer );
5523void every_ticks_call( Environment * _environment, char * _timing, char * _label, char * _timer );
5524void every_ticks_gosub( Environment * _environment, char * _timing, char * _label, char * _timer );
5525void exit_loop( Environment * _environment, int _number );
5526void exit_loop_if( Environment * _environment, char * _expression, int _number );
5527void exit_proc_if( Environment * _environment, char * _expression, char * _value );
5528void exit_procedure( Environment * _environment );
5529
5530//----------------------------------------------------------------------------
5531// *F*
5532//----------------------------------------------------------------------------
5533
5534void fade_in( Environment * _environment, char * _period );
5535void fade_in_color( Environment * _environment, int _index, int _shade );
5536void fade_in_color_semivars( Environment * _environment, int _index, char * _shade );
5537void fade_in_color_vars( Environment * _environment, char * _index, char * _shade );
5538void fade_ticks_var( Environment * _environment, char * _ticks );
5539void fade_milliseconds_var( Environment * _environment, char * _millliseconds );
5540void fade_out( Environment * _environment, char * _period );
5541void fast( Environment * _environment );
5542void fcircle( Environment * _environment, char * _x, char * _y, char * _r, char *_c, int _preserve_color );
5543void fellipse( Environment * _environment, char * _x, char * _y, char * _rx, char * _ry, char * _c, int _preserve_color );
5544void field_type( Environment * _environment, char * _name, VariableType _datatype );
5545int file_size( Environment * _environment, char * _target_name );
5546void file_storage( Environment * _environment, char * _source_name, char * _target_name, FileStorageFormat _format, VariableType _type );
5547void fill( Environment * _environment, char * _x, char * _y, char * _w, char * _h, char * _char, char * _color );
5548int find_frame_by_type( Environment * _environment, TsxTileset * _tileset, char * _images, char * _description );
5549void flash( Environment * _environment, char * _index, char * _register );
5550void flash_off( Environment * _environment, char * _index );
5551void flip_image_vars( Environment * _environment, char * _image, char * _frame, char * _sequence, char * _direction );
5552void flip_image_vars_direction( Environment * _environment, char * _image, char * _frame, char * _sequence, int _direction );
5553void flip_image_vars_indirection( Environment * _environment, char * _image, char * _frame, char * _sequence, char * _direction );
5554void font_descriptors_init( Environment * _environment, int _embedded_present );
5555void forbid( Environment * _environment );
5556Variable * fp_cos( Environment * _environment, char * _angle );
5557Variable * fp_sin( Environment * _environment, char * _angle );
5558Variable * fp_tan( Environment * _environment, char * _angle );
5559Variable * fp_log( Environment * _environment, char * _value );
5560Variable * fp_exp( Environment * _environment, char * _value );
5561int frames( Environment * _environment, char * _image );
5562void freeze_vars( Environment * _environment, char * _prefix );
5563void fujinet_set_device( Environment * _environment, int _device_id );
5564void fujinet_set_device_var( Environment * _environment, char * _device_id );
5566Variable * fujinet_is_connected( Environment * _environment );
5567Variable * fujinet_get_error( Environment * _environment );
5568Variable * fujinet_is_ready( Environment * _environment );
5569Variable * fujinet_open( Environment * _environment, char * _url, char * _mode, char * _trans );
5570void fujinet_close( Environment * _environment );
5571void fujinet_get_status( Environment * _environment );
5572Variable * fujinet_http_post_bin( Environment * _environment, char * _value );
5573Variable * fujinet_http_post_bin_type( Environment * _environment, char * _value, VariableType _type );
5574Variable * fujinet_read( Environment * _environment, char * _size );
5575Variable * fujinet_read_type( Environment * _environment, VariableType _type );
5576Variable * fujinet_write( Environment * _environment, char * _value );
5577Variable * fujinet_write_type( Environment * _environment, char * _value, VariableType _type );
5578Variable * fujinet_set_channel_mode( Environment * _environment, int _mode );
5579Variable * fujinet_set_channel_mode_var( Environment * _environment, char * _mode );
5580Variable * fujinet_parse_json( Environment * _environment );
5581void fujinet_json_query( Environment * _environment, char * _query );
5582void fujinet_login( Environment * _environment, char * _login );
5583void fujinet_password( Environment * _environment, char * _password );
5584void fujinet_define( Environment * _environment, FujiNetDefine _mode );
5585
5586//----------------------------------------------------------------------------
5587// *G*
5588//----------------------------------------------------------------------------
5589
5590void generate_cgoto_address_table( Environment * _environment );
5591Variable * get_at( Environment * _environment, char * _x, char * _y );
5592Variable * get_cmove( Environment * _environment, char * _x, char * _y );
5593Variable * get_cmove_direct( Environment * _environment, int _x, int _y );
5594void get_image( Environment * _environment, char * _image, char * _x1, char * _y1, char * _x2, char * _y2, char * _frame, char * _sequence, int _palette );
5595void get_image_overwrite_size( Environment * _environment, char * _image, char * _x1, char * _y1, char * _x2, char * _y2 );
5596Variable * get_paper( Environment * _environment, char * _color );
5597Variable * get_pen( Environment * _environment, char * _color );
5598Variable * get_raster_line( Environment * _environment );
5599Variable * get_tab( Environment * _environment );
5600char * get_temporary_filename( Environment * _environment );
5601Variable * get_ticks_per_second( Environment * _environment );
5602Variable * get_timer( Environment * _environment );
5603void global( Environment * _environment );
5604void gosub_label( Environment * _environment, char * _label );
5605void gosub_number( Environment * _environment, int _number );
5606void goto_label( Environment * _environment, char * _label );
5607void goto_number( Environment * _environment, int _number );
5608void gprint( Environment * _environment, char * _atlas, char * _text, char * _x, char * _y );
5609void graphic( Environment * _environment );
5610void gr_locate( Environment * _environment, char * _x, char * _y );
5611
5612//----------------------------------------------------------------------------
5613// *H*
5614//----------------------------------------------------------------------------
5615
5616void halt( Environment * _environment );
5617Variable * hit_to( Environment * _environment, int _sprite );
5618Variable * hit_to_vars( Environment * _environment, char * _sprite );
5619void hires( Environment * _environment, char * _foreground, char * _background );
5620void home( Environment * _environment );
5621
5622//----------------------------------------------------------------------------
5623// *I*
5624//----------------------------------------------------------------------------
5625
5626void if_then( Environment * _environment, char * _expression );
5627char * image_cut( Environment * _environment, char * _source, int _x, int _y, int _width, int _height );
5628char * image_flip_x( Environment * _environment, char * _source, int _width, int _height, int _depth );
5629char * image_flip_y( Environment * _environment, char * _source, int _width, int _height, int _depth );
5630Variable * image_load( Environment * _environment, char * _filename, char * _alias, int _mode, int _flags, int _transparent_color, int _background_color, int _bank_expansion );
5631Variable * image_load_from_buffer( Environment * _environment, char * _buffer, int _buffer_size );
5632int image_size( Environment * _environment, int _width, int _height );
5633Variable * image_converter( Environment * _environment, char * _data, int _width, int _height, int _depth, int _offset_x, int _offset_y, int _frame_width, int _frame_height, int _mode, int _transparent_color, int _flags );
5634void image_converter_asserts( Environment * _environment, int _width, int _height, int _offset_x, int _offset_y, int * _frame_width, int * _frame_height, int _modulo_x, int _modulo_y );
5635void image_converter_asserts_free( Environment * _environment, int _width, int _height, int _offset_x, int _offset_y, int * _frame_width, int * _frame_height );
5636void image_converter_asserts_free_height( Environment * _environment, int _width, int _height, int _offset_x, int _offset_y, int * _frame_width, int * _frame_height, int _modulo_x );
5637void image_converter_asserts_free_width( Environment * _environment, int _width, int _height, int _offset_x, int _offset_y, int * _frame_width, int * _frame_height, int _modulo_y );
5638Variable * image_extract( Environment * _environment, char * _images, int _frame, int * _sequence );
5639char * image_extract_subimage( Environment * _environment, char * _source, int _width, int _height, int _frame_width, int _frame_height, int _x, int _y, int _depth );
5640Variable * image_get_height( Environment * _environment, char * _image );
5641Variable * image_get_width( Environment * _environment, char * _image );
5642char * image_enlarge_right( Environment * _environment, char * _source, int _width, int _height, int _delta );
5643char * image_enlarge_bottom( Environment * _environment, char * _source, int _width, int _height, int _delta );
5645Variable * image_ref( Environment * _environment, char * _image );
5646char * image_roll_x_left( Environment * _environment, char * _source, int _width, int _height );
5647char * image_roll_x_right( Environment * _environment, char * _source, int _width, int _height );
5648char * image_roll_y_down( Environment * _environment, char * _source, int _width, int _height );
5649Variable * image_storage( Environment * _environment, char * _source_name, char *_target_name, int _mode, int _flags, int _transparent_color, int _background_color, int _bank_expansion );
5650Variable * images_storage( Environment * _environment, char * _source_name, char *_target_name, int _mode, int _frame_width, int _frame_height, int _flags, int _transparent_color, int _background_color, int _bank_expansion, int _origin_x, int _origin_y, int _offset_x, int _offset_y );
5651Variable * images_load( Environment * _environment, char * _filename, char * _alias, int _mode, int _frame_width, int _frame_height, int _flags, int _transparent_color, int _background_color, int _bank_expansion, int _origin_x, int _origin_y, int _offset_x, int _offset_y );
5652Variable * images_load_from_buffer( Environment * _environment, char * _buffer, int _buffer_size );
5653void insert( Environment * _environment, char * _string, char * _x, char * _y, char * _w, char * _h, char * _color );
5654Variable * in_var( Environment * _environment, char * _port );
5655void ink( Environment * _environment, char * _expression );
5656void inkb( Environment * _environment, char * _value, char * _color1, char * _color2 );
5657Variable * inkey( Environment * _environment );
5658void input( Environment * _environment, char * _variable, VariableType _default_type );
5659Variable * input_string( Environment * _environment, char * _size );
5660void instrument( Environment * _environment, int _instrument, int _channels );
5661void instrument_semi_var( Environment * _environment, int _instrument, char * _channels );
5662void interleaved_instructions( Environment * _environment );
5663int is_do_loop( Environment * _environment );
5664
5665//----------------------------------------------------------------------------
5666// *J*
5667//----------------------------------------------------------------------------
5668
5669void jmove( Environment * _environment, char * _port, char * _x, char * _y, char * _minx, char * _maxx, char * _miny, char *_maxy, char * _xstep, char * _ystep );
5670Variable * jfire( Environment * _environment, int _port );
5671Variable * jfire_vars( Environment * _environment, char * _port );
5672Variable * joy( Environment * _environment, int _port );
5673Variable * joydir( Environment * _environment, int _port );
5674Variable * joydir_semivars( Environment * _environment, char * _port );
5675Variable * joy_vars( Environment * _environment, char * _port );
5676Variable * joy_direction( Environment * _environment, int _port, int _direction );
5677Variable * joy_direction_semivars( Environment * _environment, char * _port, int _direction );
5678Variable * joyx( Environment * _environment, int _port );
5679Variable * joyx_vars( Environment * _environment, char * _port );
5680Variable * joyy( Environment * _environment, int _port );
5681Variable * joyy_vars( Environment * _environment, char * _port );
5682
5683//----------------------------------------------------------------------------
5684// *K*
5685//----------------------------------------------------------------------------
5686
5687int key_constant( Environment * _environment, int _key );
5688Variable * key_state( Environment * _environment, int _scancode );
5689Variable * key_state_var( Environment * _environment, char * _scancode );
5690Variable * keyshift( Environment * _environment );
5691Variable * key_pressed( Environment * _environment, int _scancode );
5692Variable * key_pressed_var( Environment * _environment, char * _scancode );
5693void kill_procedure( Environment * _environment, char * _handle );
5694
5695//----------------------------------------------------------------------------
5696// *L*
5697//----------------------------------------------------------------------------
5698
5699void label_define_numeric( Environment * _environment, int _label );
5700void label_define_named( Environment * _environment, char * _label );
5701int label_exists_named( Environment * _environment, char * _label );
5702int label_exists_numeric( Environment * _environment, int _label );
5703void label_referred_define_numeric( Environment * _environment, int _label );
5704void label_referred_define_named( Environment * _environment, char * _label );
5705int label_referred_exists_named( Environment * _environment, char * _label );
5706int label_referred_exists_numeric( Environment * _environment, int _label );
5707void label_stored_define_named( Environment * _environment, char * _label );
5708int label_stored_exists_named( Environment * _environment, char * _label );
5709void lbottom( Environment * _environment );
5710void leftw( Environment * _environment, char * _line, char * _column, char * _width, char * _height );
5711void leftb( Environment * _environment, char * _line, char * _column, char * _width, char * _height );
5712Variable * load( Environment * _environment, char * _filename, char * _alias, int _at, int _bank_expansion, int _flags );
5713void locate( Environment * _environment, char * _x, char * _y );
5714void loop( Environment * _environment, char *_label );
5715
5716//----------------------------------------------------------------------------
5717// *M*
5718//----------------------------------------------------------------------------
5719
5720RGBi * malloc_palette( int _size );
5721float max_of_two(float _x, float _y);
5722float max_of_three(float _m, float _n, float _p);
5723Variable * maximum( Environment * _environment, char * _source, char * _dest );
5724void memclr( Environment * _environment, char * _address, char * _size, char * _value );
5725void memcont( Environment * _environment, char * _param );
5726void memdef( Environment * _environment, char * _size, char * _address, char * _eaddress, char * _bank );
5727void memlen( Environment * _environment, char * _size );
5728void memload( Environment * _environment );
5729void memorize( Environment * _environment );
5730void memor( Environment * _environment, char * _address, char * _eaddress, char * _bank );
5731void memory_area_assign( MemoryArea * _first, Variable * _variable );
5732void memory_area_unassign( MemoryArea * _first, Variable * _variable );
5733void mempos( Environment * _environment, char * _address, char * _bank );
5734void memrestore( Environment * _environment, char * _param );
5735void memsave( Environment * _environment );
5736float min_of_two(float _x, float _y);
5737float min_of_three(float _m, float _n, float _p);
5738Variable * minimum( Environment * _environment, char * _source, char * _dest );
5739void mmob( Environment * _environment, char * _sprite, char * _sx, char * _sy, char * _zx, char * _zy, char * _gr, char * _sp );
5740void mmove_memory_memory( Environment * _environment, char * _from, char * _to, char * _size );
5741void mmove_memory_video( Environment * _environment, char * _from, char * _to, char * _size );
5742void mmove_video_memory( Environment * _environment, char * _from, char * _to, char * _size );
5743void move( Environment * _environment, char * _prefix, char * _movement, char * _x, char * _y, char * _animation );
5744void move_tile( Environment * _environment, char * _tile, char * _x, char * _y );
5745void movement( Environment * _environment, char * _identifier, char * _atlas, char * _prefix );
5746Variable * moving( Environment * _environment, char * _prefix, char * _movement );
5747Variable * msprite_init( Environment * _environment, char * _image, char * _sprite, int _flags );
5748Variable * msprite_duplicate( Environment * _environment, char * _original );
5749void msprite_update( Environment * _environment );
5750Variable * music_load( Environment * _environment, char * _filename, char * _alias, int _bank_expansion );
5751Variable * music_load_to_variable( Environment * _environment, char * _filename, char * _alias, int _bank_expansion );
5752Variable * music_storage( Environment * _environment, char * _filename, char * _alias, int _bank_expansion );
5753void music_var( Environment * _environment, char * _music, int _loop, int _music_type );
5754void music_pause( Environment * _environment );
5755void music_resume( Environment * _environment );
5756void music_stop( Environment * _environment );
5757void music_seek_var( Environment * _environment, char * _position );
5758
5759//----------------------------------------------------------------------------
5760// *N*
5761//----------------------------------------------------------------------------
5762
5763void next_animation( Environment * _environment, char * _prefix );
5764void next_raster( Environment * _environment );
5765void next_raster_at_with( Environment * _environment, int _at, char * _with );
5766void next_raster_at_with_var( Environment * _environment, char * _var, char * _with );
5767Variable * new_image( Environment * _environment, int _width, int _height, int _mode );
5768Variable * new_images( Environment * _environment, int _frames, int _width, int _height, int _mode );
5769Variable * new_music( Environment * _environment, int _size );
5770Variable * new_sequence( Environment * _environment, int _sequences, int _frames, int _width, int _height, int _mode );
5771
5772//----------------------------------------------------------------------------
5773// *O*
5774//----------------------------------------------------------------------------
5775
5776void offsetting_add_variable_reference( Environment * _environment, Offsetting * _first, Variable * _var, int _sequence );
5777Offsetting * offsetting_size_count( Environment * _environment, int _size, int _count );
5778void on_gosub( Environment * _environment, char * _expression );
5779void on_gosub_end( Environment * _environment );
5780void on_gosub_index( Environment * _environment, char * _label );
5781void on_gosub_number( Environment * _environment, int _number );
5782void on_goto( Environment * _environment, char * _expression );
5783void on_goto_end( Environment * _environment );
5784void on_goto_index( Environment * _environment, char * _label );
5785void on_goto_number( Environment * _environment, int _number );
5786void on_proc( Environment * _environment, char * _expression );
5787void on_proc_end( Environment * _environment );
5788void on_proc_index( Environment * _environment, char * _label );
5789void on_scroll_call( Environment * _environment, int _x, int _y, char * _label );
5790void on_scroll_gosub( Environment * _environment, int _x, int _y, char * _label );
5791void option_dialect( Environment * _environment, Dialect _dialect );
5792Variable * origin_resolution_relative_transform_x( Environment * _environment, char * _x, int _is_relative );
5793Variable * origin_resolution_relative_transform_y( Environment * _environment, char * _y, int _is_relative );
5794void out_var( Environment * _environment, char * _port, char * _value );
5795
5796//----------------------------------------------------------------------------
5797// *P*
5798//----------------------------------------------------------------------------
5799
5800void paint_vars( Environment * _environment, char * _x, char * _y, char * _c, char * _b );
5801int palette_extract( Environment * _environment, char * _data, int _width, int _height, int _depth, int _flags, RGBi * _palette );
5802RGBi * palette_match( RGBi * _source, int _source_size, RGBi * _system, int _system_size );
5803RGBi * palette_match_hardware_index( RGBi * _source, int _source_size, RGBi * _system, int _system_size );
5804RGBi * palette_merge( RGBi * _palette1, int _palette1_size, RGBi * _palette2, int _palette2_size, int * _size );
5805RGBi * palette_promote_color_as_background( int _index, RGBi * _source, int _source_size );
5806RGBi * palette_promote_color_as_foreground( int _index, RGBi * _source, int _source_size, int _max_size );
5807RGBi * palette_remove_duplicates( RGBi * _source, int _source_size, int * _unique_size );
5808RGBi * palette_shift( RGBi * _source, int _source_size, int _offset );
5809void paper( Environment * _environment, char * _paper );
5810Variable * param_procedure( Environment * _environment, char * _name );
5811char * parse_buffer( Environment * _environment, char * _buffer, int * _size, int _hex_only );
5812Variable * parse_buffer_definition( Environment * _environment, char * _buffer, VariableType _type, int _hex_only );
5813void pause_seconds( Environment * _environment, char * _string, char * _duration );
5814Variable * peek_var( Environment * _environment, char * _location );
5815Variable * peekw_var( Environment * _environment, char * _location );
5816Variable * peekd_var( Environment * _environment, char * _location );
5817void pen( Environment * _environment, char * _color );
5818void play( Environment * _environment, int _note, int _duration, int _channels );
5819void play_vars( Environment * _environment, char * _note, char * _duration, char * _channels );
5820void play_off( Environment * _environment, int _channels );
5821void play_off_var( Environment * _environment, char * _channels );
5822void play_string( Environment * _environment, char * _string );
5823void plot( Environment * _environment, char * _x, char * _y, char *_c, int _preserve_color );
5824void pmode( Environment * _environment, int _mode, int _start_page );
5825Variable * point( Environment * _environment, char * _x, char * _y );
5826void point_at( Environment * _environment, int _x, int _y );
5827void point_at_vars( Environment * _environment, char * _x, char * _y );
5828void poke_var( Environment * _environment, char * _address, char * _value );
5829void pokew_var( Environment * _environment, char * _address, char * _value );
5830void poked_var( Environment * _environment, char * _address, char * _value );
5831void pop( Environment * _environment );
5832Variable * powering( Environment * _environment, char * _source, char * _dest );
5833TileDescriptors * precalculate_tile_descriptors_for_font( char * _fontData, int _fontSize );
5834void prepare_variable_storage( Environment * _environment, char * _name, Variable * _variable );
5835void print( Environment * _environment, char * _text, int _new_line, int _raw );
5836void print_buffer( Environment * _environment, char * _buffer, int _new_line, int _printable );
5837void print_newline( Environment * _environment );
5838void print_question_mark( Environment * _environment );
5839void print_tab( Environment * _environment, int _new_line );
5840void proc( Environment * _environment, char * _label );
5841int procedure_exists( Environment * _environment, char * _name );
5842void put_key( Environment * _environment, char * _string );
5843void put_image( Environment * _environment, char * _image, char * _x1, char * _y1, char * _x2, char * _y2, char * _frame, char * _sequence, int _flags );
5844void put_image_vars( Environment * _environment, char * _image, char * _x1, char * _y1, char * _x2, char * _y2, char * _frame, char * _sequence, char * _flags );
5845void put_image_vars_flags( Environment * _environment, char * _image, char * _x1, char * _y1, char * _x2, char * _y2, char * _frame, char * _sequence, int _flags );
5846void put_tile( Environment * _environment, char * _tile, char * _x, char * _y, char * _w, char * _h );
5847void put_tilemap_vars( Environment * _environment, char * _tilemap, int _flags, char * _dx, char * _dy, char * _layer, char * _padding_tile );
5848void put_tilemap_inline( Environment * _environment, char * _tilemap, int _flags, char * _dx, char * _dy, char * _layer, int _padding_tile );
5849
5850//----------------------------------------------------------------------------
5851// *Q*
5852//----------------------------------------------------------------------------
5853
5854//----------------------------------------------------------------------------
5855// *R*
5856//----------------------------------------------------------------------------
5857
5858Variable * random_value( Environment * _environment, VariableType _type );
5859void randomize( Environment * _environment, char * _seed );
5860Variable * range( Environment * _environment, char * _expression, char * _min, char * _max );
5861void raster_at( Environment * _environment, char * _label, int _position );
5862void raster_at_var( Environment * _environment, char * _label, char * _position );
5863Variable * read_end( Environment * _environment );
5865void read_data( Environment * _environment, char * _variable, int _safe );
5866void read_data_unsafe( Environment * _environment, char * _variable );
5867void remember( Environment * _environment );
5868void repeat( Environment * _environment, char *_label );
5869void reset( Environment * _environment );
5870char * resolve_color( Environment * _environment, char * _color );
5871char * resource_load_asserts( Environment * _environment, char * _filename );
5872Variable * respawn_procedure( Environment * _environment, char * _name );
5873void restore_label( Environment * _environment, char * _label );
5874void restore_label_unsafe( Environment * _environment, char * _label );
5875void resume_vars( Environment * _environment, char * _thread );
5876void return_label( Environment * _environment );
5877void return_procedure( Environment * _environment, char * _value );
5878int rgbi_equals_rgb( RGBi * _first, RGBi * _second );
5879int rgbi_equals_rgba( RGBi * _first, RGBi * _second );
5880int rgbi_extract_palette( Environment * _environment, unsigned char* _source, int _width, int _height, int _depth, RGBi _palette[], int _palette_size, int _sorted);
5881void rgbi_move( RGBi * _source, RGBi * _destination );
5882int rgbi_distance( RGBi * _source, RGBi * _destination );
5883void rightw( Environment * _environment, char * _line, char * _column, char * _width, char * _height );
5884void rightb( Environment * _environment, char * _line, char * _column, char * _width, char * _height );
5885Variable * rnd( Environment * _environment, char * _value );
5886Variable * rnd0( Environment * _environment );
5887Variable * rnd1( Environment * _environment );
5888void rot( Environment * _environment, char * _angle, char * _step );
5889Variable * rotate_vector( Environment * _environment, char * _vector, char * _angle );
5890void run( Environment * _environment );
5891void run_parallel( Environment * _environment );
5892Variable * running( Environment * _environment, char * _thread_id, char * _procedure_name );
5893
5894//----------------------------------------------------------------------------
5895// *S*
5896//----------------------------------------------------------------------------
5897
5898void sbpen_set( Environment * _environment, int _index, char * _color );
5899Variable * sbpen_get( Environment * _environment, char * _index );
5900Variable * scancode( Environment * _environment );
5901Variable * scanshift( Environment * _environment );
5902Variable * screen_can( Environment * _environment, int _mode );
5903void screen_columns( Environment * _environment, int _columns );
5904void screen_columns_var( Environment * _environment, char * _columns );
5905Variable * screen_get_height( Environment * _environment );
5906Variable * screen_get_width( Environment * _environment );
5907void screen_horizontal_scroll( Environment * _environment, int _displacement );
5908void screen_horizontal_scroll_var( Environment * _environment, char * _displacement );
5909void screen_mode( Environment * _environment, int _mode );
5910void screen_type_color_set( Environment * _environment, int _type, int _color_set );
5911void screen_off( Environment * _environment );
5912void screen_on( Environment * _environment );
5913void screen_rows( Environment * _environment, int _rows );
5914void screen_rows_var( Environment * _environment, char * _rows );
5915void screen_swap( Environment * _environment );
5916Variable * screen_page( Environment * _environment );
5917Variable * screen_tiles_get( Environment * _environment );
5918Variable * screen_tiles_get_height( Environment * _environment );
5919Variable * screen_tiles_get_width( Environment * _environment );
5920Variable * screen_var( Environment * _environment, char * _x, char * _y, int _as_string );
5921void screen_vertical_scroll( Environment * _environment, int _displacement );
5922void screen_vertical_scroll_var( Environment * _environment, char * _displacement );
5923void scroll( Environment * _environment, int _dx, int _dy );
5924void select_case( Environment * _environment, char * _expression );
5925Variable * sequence_load( Environment * _environment, char * _filename, char * _alias, int _mode, int _frame_width, int _frame_height, int _flags, int _transparent_color, int _background_color, int _bank_expansion, int _origin_x, int _origin_y, int _offset_x, int _offset_y );
5926Variable * sequence_storage( Environment * _environment, char * _filename, char * _alias, int _mode, int _frame_width, int _frame_height, int _flags, int _transparent_color, int _background_color, int _bank_expansion, int _origin_x, int _origin_y, int _offset_x, int _offset_y );
5927Variable * serial_read( Environment * _environment, char * _size );
5928Variable * serial_read_type( Environment * _environment, VariableType _type, int _big_endian );
5929Variable * serial_write( Environment * _environment, char * _data );
5930Variable * serial_write_type( Environment * _environment, char * _data, VariableType _type, int _big_endian );
5931Variable * serialize( Environment * _environment, char * _data, char * _key );
5932void set_timer( Environment * _environment, char * _value );
5933void shared( Environment * _environment );
5934void shoot( Environment * _environment, int _channels );
5935void slice_image( Environment * _environment, char * _image, char * _frame, char * _sequence, char * _destination );
5936void slow( Environment * _environment );
5937void sound( Environment * _environment, int _freq, int _duration, int _channels );
5938void sound_vars( Environment * _environment, char * _freq, char * _duration, char * _channels );
5939void sound_off( Environment * _environment, int _channels );
5940void sound_off_var( Environment * _environment, char * _channels );
5941Variable * sign( Environment * _environment, char * _value );
5942Variable * spawn_procedure( Environment * _environment, char * _name , int _halted );
5943void spc( Environment * _environment, char * _spaces );
5944Variable * spen( Environment * _environment );
5945void sprite_color( Environment * _environment, int _sprite, int _color );
5946void sprite_color_vars( Environment * _environment, char * _sprite, char * _color );
5947void sprite_compress_horizontal( Environment * _environment, int _sprite );
5948void sprite_compress_horizontal_var( Environment * _environment, char * _sprite );
5949void sprite_compress_vertical( Environment * _environment, int _sprite );
5950void sprite_compress_vertical_var( Environment * _environment, char * _sprite );
5951Variable * sprite_converter( Environment * _environment, char * _data, int _width, int _height, int _depth, RGBi * _colorm, int _flags, int _slot_x, int _slot_y );
5952void sprite_data_from( Environment * _environment, int _sprite, int _address );
5953void sprite_data_from_vars( Environment * _environment, char * _sprite, char * _address );
5954void sprite_disable( Environment * _environment, int _sprite );
5955void sprite_disable_var( Environment * _environment, char * _sprite );
5956void sprite_enable( Environment * _environment, int _sprite );
5957void sprite_enable_var( Environment * _environment, char * _sprite );
5958void sprite_expand_horizontal( Environment * _environment, int _sprite );
5959void sprite_expand_horizontal_var( Environment * _environment, char * _sprite );
5960void sprite_expand_vertical( Environment * _environment, int _sprite );
5961void sprite_expand_vertical_var( Environment * _environment, char * _sprite );
5962Variable * sprite_init( Environment * _environment, char * _image, char * _sprite, int _flags );
5963void sprite_monocolor( Environment * _environment, int _sprite );
5964void sprite_monocolor_var( Environment * _environment, char * _sprite );
5965void sprite_multicolor( Environment * _environment, int _sprite );
5966void sprite_multicolor_var( Environment * _environment, char * _sprite );
5967void sprite_at( Environment * _environment, int _sprite, int _x, int _y );
5968void sprite_at_vars( Environment * _environment, char * _sprite, char * _x, char * _y );
5969Variable * sqroot( Environment * _environment, char * _value );
5970StaticString * static_string_create( Environment * _environment, char * _value, int _size );
5971StaticString * static_string_create_filled( Environment * _environment, int _size, char _value );
5972StaticString * static_string_find_by_value( Environment * _environment, char * _value, int _Size );
5973void stop_animation( Environment * _environment, char * _prefix );
5974void stop_movement( Environment * _environment, char * _prefix );
5975Variable * strig( Environment * _environment, int _port );
5976Variable * strig_vars( Environment * _environment, char * _port );
5977StaticString * string_reserve( Environment * _environment, char * _value );
5978Variable * strptr( Environment * _environment, char * _name );
5979void suspend_vars( Environment * _environment, char * _thread );
5980void sys( Environment * _environment, int _address );
5981void sys_var( Environment * _environment, char * _address );
5982void sys_call( Environment * _environment, int _address );
5983int system_call( Environment * _environment, char * _command );
5984
5985//----------------------------------------------------------------------------
5986// *T*
5987//----------------------------------------------------------------------------
5988
5989
5990void text_at( Environment * _environment, char * _x, char * _y, char * _text );
5991void text_encoded( Environment * _environment, char * _text, char * _pen, char * _paper, int _raw );
5992Variable * text_get_xcurs( Environment * _environment );
5993Variable * text_get_ycurs( Environment * _environment );
5994void text_hscroll_line( Environment * _environment, int _direction, int _overlap );
5995void text_hscroll_screen( Environment * _environment, int _direction, int _overlap );
5996void text_newline( Environment * _environment );
5997void text_question_mark( Environment * _environment );
5998void text_set_tab( Environment * _environment, char * _net_tab );
5999void text_tab( Environment * _environment );
6000void text_text( Environment * _environment, char * _text, int _raw );
6001void text_vscroll( Environment * _environment );
6002void text_vscroll_screen( Environment * _environment, int _direction, int _overlap );
6003void textmap_at( Environment * _environment, int _address );
6004void textmap_at_var( Environment * _environment, char * _address );
6005Variable * tilemap_at( Environment * _environment, char * _tilemap, char * _x, char * _y, char * _layer );
6006void tilemap_disable( Environment * _environment );
6007void tilemap_enable( Environment * _environment, int _width, int _height, int _colors, int _tile_width, int _tile_height );
6008Variable * tile_at( Environment * _environment, char * _x, char * _y );
6009int tile_allocate( TileDescriptors * _tiles, char * _data );
6010Variable * tile_belong( Environment * _environment, char * _tile, char * _tiles );
6011Variable * tile_class( Environment * _environment, char * _tileset, int _id );
6012Variable * tile_get_first( Environment * _environment, char * _tile );
6013Variable * tile_get_height( Environment * _environment, char * _tile );
6014Variable * tile_get_width( Environment * _environment, char * _tile );
6015int tile_id( Environment * _environment, char * _tileset, char * _id );
6016Variable * tile_probability( Environment * _environment, char * _tileset, int _id );
6017Variable * tilemap_get_height( Environment * _environment, char * _tilemap );
6018Variable * tilemap_get_width( Environment * _environment, char * _tilemap );
6019Variable * tileset_tile_get_height( Environment * _environment, char * _tileset );
6020Variable * tileset_tile_get_width( Environment * _environment, char * _tileset );
6021Variable * tile_load( Environment * _environment, char * _filename, int _flags, char * _tileset, int _index );
6022Variable * tiles_load( Environment * _environment, char * _filename, int _flags, char * _tileset, int _index );
6023void tiles_at( Environment * _environment, int _address );
6024void tiles_at_var( Environment * _environment, char * _address );
6025Variable * tilemap_index_vars( Environment * _environment, char * _tilemap, char * _column, char * _row, char * _layer );
6026Variable * tilemap_load( Environment * _environment, char * _filename, char * _alias, int _mode, int _flags, int _transparent_color, int _background_color, int _bank_expansion );
6027Variable * tileset_load( Environment * _environment, char * _filename, char * _alias, int _mode, int _flags, int _transparent_color, int _background_color, int _bank_expansion );
6028Variable * tilemap_storage( Environment * _environment, char * _filename, char * _alias, int _mode, int _flags, int _transparent_color, int _background_color, int _bank_expansion );
6029Variable * tileset_storage( Environment * _environment, char * _source_name, char * _target_name, int _mode, int _flags, int _transparent_color, int _background_color, int _bank_expansion );
6030Variable * tileset_of_vars( Environment * _environment, char * _tilemap );
6031Variable * travel_path( Environment * _environment, char * _p, char * _x, char * _y, char * _times, char * _limited );
6032
6033//----------------------------------------------------------------------------
6034// *u*
6035//----------------------------------------------------------------------------
6036
6037void use_tileset( Environment * _environment, char * _tileset );
6038char * unescape_string( Environment * _environment, char * _value, int _printing, int * _final_size );
6039Variable * uncompress( Environment * _environment, char * _value );
6040void unfreeze_vars( Environment * _environment, char * _prefix );
6041void upw( Environment * _environment, char * _line, char * _column, char * _width, char * _height );
6042void upb( Environment * _environment, char * _line, char * _column, char * _width, char * _height );
6043
6044//----------------------------------------------------------------------------
6045// *V*
6046//----------------------------------------------------------------------------
6047
6048Variable * variable_add( Environment * _environment, char * _source, char * _dest );
6049Variable * variable_add_const( Environment * _environment, char * _source, int _dest );
6050void variable_add_inplace( Environment * _environment, char * _source, int _dest );
6051void variable_add_inplace_type( Environment * _environment, char * _source, char * _field, int _dest );
6052void variable_add_inplace_vars( Environment * _environment, char * _source, char * _dest );
6053void variable_add_inplace_type_vars( Environment * _environment, char * _source, char * _field, char * _dest );
6054void variable_add_inplace_array( Environment * _environment, char * _source, char * _destination );
6055void variable_add_inplace_mt( Environment * _environment, char * _source, char * _destination );
6056Variable * variable_and( Environment * _environment, char * _left, char * _right );
6057Variable * variable_and_const( Environment * _environment, char * _source, int _mask );
6058Variable * variable_array_count_vars( Environment * _environment, char * _name, char * _target );
6059Variable * variable_array_max_vars( Environment * _environment, char * _name );
6060Variable * variable_array_min_vars( Environment * _environment, char * _name );
6061Variable * variable_array_sum_vars( Environment * _environment, char * _name );
6062void variable_array_fill( Environment * _environment, char * _name, int _value );
6063void variable_array_fill_random( Environment * _environment, char * _name, int _base, int _min_value, int _max_value, int _count, int _boolean );
6064void variable_array_fill_incremental( Environment * _environment, char * _name, int _min, int _count );
6065void variable_array_shuffle( Environment * _environment, char * _name, int _rounds );
6066Variable * variable_array_type( Environment * _environment, char *_name, VariableType _type );
6067Variable * variable_bin( Environment * _environment, char * _value, char * _digits, char * _zero, char * _one );
6068Variable * variable_bit( Environment * _environment, char * _value, char * _position );
6069Variable * variable_cast( Environment * _environment, char * _source, VariableType _type );
6071Variable * variable_compare( Environment * _environment, char * _source, char * _dest );
6072void variable_compare_and_branch_const( Environment * _environment, char *_source, int _destination, char *_name, int _positive );
6073Variable * variable_compare_const( Environment * _environment, char * _source, int _dest );
6074Variable * variable_compare_not( Environment * _environment, char * _source, char * _dest );
6075Variable * variable_compare_not_const( Environment * _environment, char * _source, int _dest );
6076Variable * variable_complement_const( Environment * _environment, char * _source, int _mask );
6077void variable_decrement( Environment * _environment, char * _source );
6078void variable_decrement_type( Environment * _environment, char * _source, char * _field );
6079void variable_decrement_array( Environment * _environment, char * _source );
6080void variable_decrement_array_type( Environment * _environment, char * _source, char * _field );
6081void variable_decrement_mt( Environment * _environment, char * _source );
6082Variable * variable_define( Environment * _environment, char * _name, VariableType _type, int _value );
6083Variable * variable_define_no_init( Environment * _environment, char * _name, VariableType _type );
6084int variable_delete( Environment * _environment, char * _name );
6085Variable * variable_direct_assign( Environment * _environment, char * _var, char * _expr );
6086Variable * variable_div( Environment * _environment, char * _source, char * _dest, char * _remainder );
6087Variable * variable_div_const( Environment * _environment, char * _source, int _dest, char * _remainder );
6088Variable * variable_div2_const( Environment * _environment, char * _source, int _bits, char * _remainder );
6089Variable * variable_flip( Environment * _environment, char * _variable );
6090Variable * variable_sr_const( Environment * _environment, char * _source, int _bits );
6091void variable_global( Environment * _environment, char * _pattern );
6092Variable * variable_greater_than( Environment * _environment, char * _source, char * _dest, int _equal );
6093Variable * variable_greater_than_const( Environment * _environment, char * _source, int _dest, int _equal );
6094Variable * variable_hex( Environment * _environment, char * _value, int _separator );
6095Variable * variable_hex2bin( Environment * _environment, char * _value, char * _variable );
6096Variable * variable_export( Environment * _environment, char * _name, VariableType _type, int _size_or_value );
6097Variable * variable_import( Environment * _environment, char * _name, VariableType _type, int _size_or_value );
6098void variable_increment( Environment * _environment, char * _source );
6099void variable_increment_type( Environment * _environment, char * _source, char * _field );
6100void variable_increment_array( Environment * _environment, char * _source );
6101void variable_increment_array_type( Environment * _environment, char * _source, char * _field );
6102void variable_increment_mt( Environment * _environment, char * _source );
6103Variable * variable_int( Environment * _environment, char * _expression );
6104Variable * variable_less_than( Environment * _environment, char * _source, char * _dest, int _equal );
6105Variable * variable_less_than_const( Environment * _environment, char * _source, int _dest, int _equal );
6106Variable * variable_mod( Environment * _environment, char * _source, char * _destination );
6107Variable * variable_move( Environment * _environment, char * _source, char * _dest );
6108void variable_move_array( Environment * _environment, char * _array, char * _value );
6109void variable_move_array_string( Environment * _environment, char * _array, char * _string );
6110void variable_move_array_type( Environment * _environment, char * _array, char * _field, char * _value );
6111void variable_move_array1_type( Environment * _environment, char * _array, char * _index, char * _field, char * _value );
6112void variable_move_array1_type_const( Environment * _environment, char * _array, char * _index, char * _field, int _value );
6113void variable_move_array1_type_fields( Environment * _environment, char * _array, char * _index, char * _field1, char * _field2 );
6114Variable * variable_move_from_array( Environment * _environment, char * _array );
6115void variable_move_from_array_inplace( Environment * _environment, char * _array, char * _value );
6116Variable * variable_move_from_array_type( Environment * _environment, char * _array, char * _field );
6117Variable * variable_move_from_array1_type( Environment * _environment, char * _array, char * _index, char * _field );
6118void variable_move_from_array_type_inplace( Environment * _environment, char * _array, char * _field, char * _value );
6119void variable_move_from_array1_type_inplace( Environment * _environment, char * _array, char * _index, char * _field, char * _value );
6120Variable * variable_move_from_mt( Environment * _environment, char * _source, char * _destination );
6121Variable * variable_move_from_type( Environment * _environment, char * _type, char * _field );
6122void variable_move_from_type_inplace( Environment * _environment, char * _type, char * _field, char * _value );
6123Variable * variable_move_to_mt( Environment * _environment, char * _source, char * _destination );
6124void variable_move_type( Environment * _environment, char * _type, char * _field, char * _value );
6125Variable * variable_move_naked( Environment * _environment, char * _source, char * _dest );
6126Variable * variable_mul( Environment * _environment, char * _source, char * _dest );
6127Variable * variable_mul2_const( Environment * _environment, char * _source, int _bits );
6128Variable * variable_sl_const( Environment * _environment, char * _source, int _bits );
6129Variable * variable_not( Environment * _environment, char * _value );
6130void variable_on_memory_init( Environment * _environment, int _imported_too );
6131Variable * variable_or( Environment * _environment, char * _left, char * _right );
6132Variable * variable_or( Environment * _environment, char * _source, char * _dest );
6133void variable_temporary_remove( Environment * _environment, char * _name );
6134void variable_reset( Environment * _environment );
6135Variable * variable_resize_buffer( Environment * _environment, char * _destination, int _size );
6136int variable_exists( Environment * _environment, char * _name );
6137int variable_exists_by_realname( Environment * _environment, char * _name );
6138Variable * variable_retrieve( Environment * _environment, char * _name );
6139Variable * variable_retrieve_by_realname( Environment * _environment, char * _name );
6140Variable * variable_retrieve_or_define( Environment * _environment, char * _name, VariableType _type, int _value );
6141void variable_set_type( Environment * _environment, char * _source, char * _type );
6142Variable * variable_store( Environment * _environment, char * _source, unsigned int _value );
6143Variable * variable_store_type( Environment * _environment, char * _source, char * _signed, unsigned int _value );
6144void variable_store_mt( Environment * _environment, char * _source, unsigned int _value );
6145Variable * variable_store_array( Environment * _environment, char * _destination, unsigned char * _buffer, int _size, int _at );
6146void variable_store_array_const( Environment * _environment, char * _array, int _value );
6147Variable * variable_store_buffer( Environment * _environment, char * _destination, unsigned char * _buffer, int _size, int _at );
6148Variable * variable_store_string( Environment * _environment, char * _source, char * _string );
6149Variable * variable_store_float( Environment * _environment, char * _destination, double _value );
6150Variable * variable_string_asc( Environment * _environment, char * _char );
6151Variable * variable_string_chr( Environment * _environment, char * _ascii );
6152Variable * variable_string_dup( Environment * _environment, char * _string, char * _repetitions );
6153Variable * variable_string_flip( Environment * _environment, char * _string );
6154Variable * variable_string_insert( Environment * _environment, char * _string, char * _altstring, char * _pos );
6155Variable * variable_string_inst( Environment * _environment, char * _string, char * _altstring, char * _pos );
6156Variable * variable_string_instr( Environment * _environment, char * _search, char * _searched, char * _start );
6157Variable * variable_string_left( Environment * _environment, char * _string, char * _position );
6158void variable_string_left_assign( Environment * _environment, char * _string, char * _position, char * _expression );
6159Variable * variable_string_len( Environment * _environment, char * _string );
6160Variable * variable_string_lower( Environment * _environment, char * _string );
6161Variable * variable_string_mid( Environment * _environment, char * _string, char * _position, char * _len );
6162void variable_string_mid_assign( Environment * _environment, char * _string, char * _position, char * _len, char * _expression );
6163Variable * variable_string_pick( Environment * _environment, char * _string, int _position );
6164Variable * variable_string_right( Environment * _environment, char * _string, char * _position );
6165void variable_string_right_assign( Environment * _environment, char * _string, char * _position, char * _expression );
6166Variable * variable_string_space( Environment * _environment, char * _repetitions );
6167Variable * variable_string_str( Environment * _environment, char * _value );
6168Variable * variable_string_string( Environment * _environment, char * _string, char * _repetitions );
6169Variable * variable_string_substring( Environment * _environment, char * _string, char * _start, char * _end );
6170Variable * variable_string_upper( Environment * _environment, char * _string );
6171Variable * variable_string_val( Environment * _environment, char * _value );
6172Variable * variable_sub( Environment * _environment, char * _source, char * _dest );
6173Variable * variable_sub_const( Environment * _environment, char * _source, int _dest );
6174void variable_sub_inplace( Environment * _environment, char * _source, char * _dest );
6175void variable_swap( Environment * _environment, char * _source, char * _dest );
6176Variable * variable_temporary( Environment * _environment, VariableType _type, char * _meaning );
6177VariableType variable_type_from_numeric_value( Environment * _environment, int _number );
6178Variable * variable_resident( Environment * _environment, VariableType _type, char * _meaning );
6179Variable * variable_xor( Environment * _environment, char * _left, char * _right );
6180void variable_xor_inplace( Environment * _environment, char * _source, int _dest );
6181void variable_xor_inplace_vars( Environment * _environment, char * _source, char * _dest );
6182void variable_xor_inplace_mt( Environment * _environment, char * _source, char * _destination );
6183Variable * varptr( Environment * _environment, char * _identifier );
6184void vcenter( Environment * _environment, char * _string, int _newline );
6185Variable * vector_get_x( Environment * _environment, char * _vector );
6186Variable * vector_get_y( Environment * _environment, char * _vector );
6187void vhcenter( Environment * _environment, char * _string, int _newline, char * _width );
6188void volume( Environment * _environment, int _volume, int _channels );
6189void volume_vars( Environment * _environment, char * _volume, char * _channels );
6190void volume_off( Environment * _environment, int _channels );
6191void volume_off_var( Environment * _environment, char * _channels );
6192
6193//----------------------------------------------------------------------------
6194// *W*
6195//----------------------------------------------------------------------------
6196
6197void wait_cycles( Environment * _environment, int _timing, int _parallel );
6198void wait_cycles_var( Environment * _environment, char * _timing, int _parallel );
6199void wait_fire( Environment * _environment, int _port, int _release );
6200void wait_fire_semivar( Environment * _environment, char * _port, int _release );
6201void wait_key( Environment * _environment, int _release );
6202void wait_key_or_fire( Environment * _environment, int _port, int _release );
6203void wait_key_or_fire_semivar( Environment * _environment, char * _port, int _release );
6204void wait_milliseconds( Environment * _environment, int _timing );
6205void wait_milliseconds_var( Environment * _environment, char * _timing );
6206void wait_ticks( Environment * _environment, int _timing );
6207void wait_ticks_var( Environment * _environment, char * _timing );
6208void wait_vbl( Environment * _environment, char * _raster_line );
6209void wait_until( Environment * _environment );
6210void wait_until_condition( Environment * _environment, char * _condition );
6211void wait_while( Environment * _environment );
6212void wait_while_condition( Environment * _environment, char * _condition );
6213void wait_parallel( Environment * _environment, char * _thread );
6214void wave( Environment * _environment, char * _voice, char * _bits, char * _pulse );
6215void writing( Environment * _environment, char * _mode, char * _parts );
6216
6217//----------------------------------------------------------------------------
6218// *X*
6219//----------------------------------------------------------------------------
6220
6221Variable * xpen( Environment * _environment );
6222Variable * x_graphic_get( Environment * _environment, char * _x );
6223Variable * x_text_get( Environment * _environment, char * _x );
6224
6225//----------------------------------------------------------------------------
6226// *Y*
6227//----------------------------------------------------------------------------
6228
6229void yield( Environment * _environment );
6230Variable * ypen( Environment * _environment );
6231Variable * y_graphic_get( Environment * _environment, char * _y );
6232Variable * y_text_get( Environment * _environment, char * _y );
6233
6234#if defined(__atari__)
6235 #define targetDescription "ATARI 400/800"
6236 #define defaultExtension "xex"
6237 #include "../src-generated/modules_atari.h"
6238 #include "hw/6502.h"
6239 #include "hw/antic.h"
6240 #include "hw/gtia.h"
6241 #include "hw/pokey.h"
6242 #include "hw/atari.h"
6243#elif defined(__atarixl__)
6244 #define targetDescription "ATARI XL/XEGS"
6245 #define defaultExtension "xex"
6246 #include "../src-generated/modules_atarixl.h"
6247 #include "hw/6502.h"
6248 #include "hw/antic.h"
6249 #include "hw/gtia.h"
6250 #include "hw/pokey.h"
6251 #include "hw/atari.h"
6252#elif defined(__c128__)
6253 #define targetDescription "Commodore 128 (MOS 8510 native)"
6254 #define defaultExtension "prg"
6255 #include "../src-generated/modules_c128.h"
6256 #include "hw/6502.h"
6257 #include "hw/vic2.h"
6258 #include "hw/sid.h"
6259 #include "hw/cia.h"
6260 #include "hw/c128.h"
6261 #include "outputs/d64.h"
6262#elif defined(__c128z__)
6263 #define targetDescription "Commodore 128 (ZILOG Z80 native)"
6264 #define defaultExtension "prg"
6265 #include "../src-generated/modules_c128z.h"
6266 #include "hw/z80.h"
6267 #include "hw/vdcz.h"
6268 #include "hw/sidz.h"
6269 #include "hw/c128z.h"
6270#elif defined(__c16__)
6271 #define targetDescription "Commodore 16"
6272 #define defaultExtension "prg"
6273 #include "../src-generated/modules_c16.h"
6274 #include "hw/6502.h"
6275 #include "hw/ted.h"
6276 #include "hw/c16.h"
6277#elif defined(__c64__)
6278 #define targetDescription "Commodore 64"
6279 #define defaultExtension "prg"
6281 #include "hw/6502.h"
6282 #include "hw/vic2.h"
6283 #include "hw/sid.h"
6284 #include "hw/c64.h"
6285 #include "hw/cia.h"
6286 #include "outputs/d64.h"
6287#elif defined(__c64reu__)
6288 #define targetDescription "Commodore 64 + REU"
6289 #define defaultExtension "d64"
6290 #include "../src-generated/modules_c64reu.h"
6291 #include "hw/6502.h"
6292 #include "hw/vic2.h"
6293 #include "hw/sid.h"
6294 #include "hw/cia.h"
6295 #include "hw/c64reu.h"
6296 #include "outputs/d64.h"
6297#elif defined(__coco__)
6298 #define targetDescription "TRS-80 Color Computer 1/2 (Motorola 6809)"
6299 #define defaultExtension "dsk"
6300 #include "../src-generated/modules_coco.h"
6301 #include "hw/6809.h"
6302 #include "hw/6847.h"
6303 #include "hw/pia.h"
6304 #include "hw/coco.h"
6305 #include "hw/sn76489m.h"
6306#elif defined(__cocob__)
6307 #define targetDescription "TRS-80 Color Computer 1/2 (Motorola 6309)"
6308 #define defaultExtension "dsk"
6309 #include "../src-generated/modules_cocob.h"
6310 #include "hw/6309.h"
6311 #include "hw/6847b.h"
6312 #include "hw/pia.h"
6313 #include "hw/cocob.h"
6314 #include "hw/sn76489m.h"
6315#elif defined(__coco3__)
6316 #define targetDescription "TRS-80 Color Computer 3 (Motorola 6809)"
6317 #define defaultExtension "dsk"
6318 #include "../src-generated/modules_coco3.h"
6319 #include "hw/6809.h"
6320 #include "hw/gime.h"
6321 #include "hw/pia.h"
6322 #include "hw/coco3.h"
6323 #include "hw/sn76489m.h"
6324#elif defined(__coco3b__)
6325 #define targetDescription "TRS-80 Color Computer 3 (Motorola 6309)"
6326 #define defaultExtension "dsk"
6327 #include "../src-generated/modules_coco3b.h"
6328 #include "hw/6309.h"
6329 #include "hw/gime.h"
6330 #include "hw/pia.h"
6331 #include "hw/coco3b.h"
6332 #include "hw/sn76489m.h"
6333#elif defined(__coleco__)
6334 #define targetDescription "ColecoVision"
6335 #define defaultExtension "rom"
6336 #include "../src-generated/modules_coleco.h"
6337 #include "hw/z80.h"
6338 #include "hw/coleco.h"
6339 #include "hw/tms9918.h"
6340 #include "hw/sn76489z.h"
6341#elif defined(__cpc__)
6342 #define targetDescription "Amstrad CPC 664"
6343 #define defaultExtension "dsk"
6344 #include "../src-generated/modules_cpc.h"
6345 #include "hw/z80.h"
6346 #include "hw/cpc.h"
6347 #include "hw/ay8910.h"
6348#elif defined(__d32__)
6349 #define targetDescription "Dragon 32 (Motorola 6809)"
6350 #define defaultExtension "bin"
6351 #include "../src-generated/modules_d32.h"
6352 #include "hw/6809.h"
6353 #include "hw/6847.h"
6354 #include "hw/pia.h"
6355 #include "hw/d32.h"
6356#elif defined(__d32b__)
6357 #define targetDescription "Dragon 32 (Motorola 6309)"
6358 #define defaultExtension "bin"
6359 #include "../src-generated/modules_d32b.h"
6360 #include "hw/6309.h"
6361 #include "hw/6847b.h"
6362 #include "hw/pia.h"
6363 #include "hw/d32b.h"
6364#elif defined(__d64__)
6365 #define targetDescription "Dragon 64 (Motorola 6809)"
6366 #define defaultExtension "bin"
6367 #include "../src-generated/modules_d64.h"
6368 #include "hw/6809.h"
6369 #include "hw/6847.h"
6370 #include "hw/pia.h"
6371 #include "hw/d64.h"
6372#elif defined(__d64b__)
6373 #define targetDescription "Dragon 64 (Motorola 6309)"
6374 #define defaultExtension "bin"
6375 #include "../src-generated/modules_d64b.h"
6376 #include "hw/6309.h"
6377 #include "hw/6847b.h"
6378 #include "hw/pia.h"
6379 #include "hw/d64b.h"
6380#elif defined(__gb__)
6381 #define targetDescription "Gameboy"
6382 #define defaultExtension "gb"
6383 #include "../src-generated/modules_gb.h"
6384 #include "hw/sm83.h"
6385 #include "hw/gb.h"
6386#elif defined(__mo5__)
6387 #define targetDescription "Thomson MO5"
6388 #define defaultExtension "k7"
6389 #include "../src-generated/modules_mo5.h"
6390 #include "hw/6809.h"
6391 #include "hw/ef936x.h"
6392 #include "hw/mo5.h"
6393#elif defined(__msx1__)
6394 #define targetDescription "MSX"
6395 #define defaultExtension "rom"
6396 #include "../src-generated/modules_msx1.h"
6397 #include "hw/z80.h"
6398 #include "hw/msx1.h"
6399 #include "hw/tms9918.h"
6400 #include "hw/ay8910.h"
6401#elif defined(__pc128op__)
6402 #define targetDescription "PC128 Olivetti Prodest / Thomson MO6"
6403 #define defaultExtension "k7"
6404 #include "../src-generated/modules_pc128op.h"
6405 #include "hw/6809.h"
6406 #include "hw/ef936x.h"
6407 #include "hw/pc128op.h"
6408 #include "hw/sn76489m.h"
6409#elif defined(__pc1403__)
6410 #define targetDescription "Sharp PC-1403"
6411 #define defaultExtension "ram"
6412 #include "../src-generated/modules_pc1403.h"
6413 #include "hw/sc61860.h"
6414 #include "hw/pc1403.h"
6415#elif defined(__pccga__)
6416 #define targetDescription "PC IBM (CGA)"
6417 #define defaultExtension "com"
6418 #include "../src-generated/modules_pccga.h"
6419 #include "hw/8086.h"
6420 #include "hw/cga.h"
6421 #include "hw/pccga.h"
6422#elif defined(__plus4__)
6423 #define targetDescription "Commodore PLUS/4"
6424 #define defaultExtension "prg"
6425 #include "../src-generated/modules_plus4.h"
6426 #include "hw/6502.h"
6427 #include "hw/ted.h"
6428 #include "hw/plus4.h"
6429#elif defined(__sc3000__)
6430 #define targetDescription "SEGA SC-3000"
6431 #define defaultExtension "rom"
6432 #include "../src-generated/modules_sc3000.h"
6433 #include "hw/z80.h"
6434 #include "hw/sc3000.h"
6435 #include "hw/tms9918.h"
6436 #include "hw/sn76489z.h"
6437#elif defined(__sg1000__)
6438 #define targetDescription "SEGA SG-1000"
6439 #define defaultExtension "rom"
6440 #include "../src-generated/modules_sg1000.h"
6441 #include "hw/z80.h"
6442 #include "hw/sg1000.h"
6443 #include "hw/tms9918.h"
6444 #include "hw/sn76489z.h"
6445#elif defined(__to8__)
6446 #define targetDescription "Thomson TO8"
6447 #define defaultExtension "k7"
6448 #include "../src-generated/modules_to8.h"
6449 #include "hw/6809.h"
6450 #include "hw/ef936x.h"
6451 #include "hw/to8.h"
6452#elif defined(__vg5000__)
6453 #define targetDescription "Philips VG5000"
6454 #define defaultExtension "k7"
6455 #include "../src-generated/modules_vg5000.h"
6456 #include "hw/z80.h"
6457 #include "hw/vg5000.h"
6458 #include "hw/ef9345.h"
6459#elif defined(__vic20__)
6460 #define targetDescription "Commodore VIC-20"
6461 #define defaultExtension "prg"
6462 #include "../src-generated/modules_vic20.h"
6463 #include "hw/6502.h"
6464 #include "hw/vic1.h"
6465 #include "hw/vic20.h"
6466 #include "outputs/d64.h"
6467#elif defined(__vz200__)
6468 #define targetDescription "VTech Laser200/210/305/310"
6469 #define defaultExtension "vz"
6470 #include "../src-generated/modules_vz200.h"
6471 #include "hw/z80.h"
6472 #include "hw/vz200.h"
6473 #include "hw/6847z.h"
6474#elif defined(__zx__)
6475 #define targetDescription "ZX Spectrum 48K"
6476 #define defaultExtension "tap"
6477 #include "../src-generated/modules_zx.h"
6478 #include "hw/z80.h"
6479 #include "hw/zx.h"
6480#endif
6481
6482#ifdef CPU_BIG_ENDIAN
6483 #define ENDIANESSVALUE 1 /* big endian */
6484 #define IMAGE_GET_WIDTH( buffer, offset, width ) \
6485 if ( IMAGE_WIDTH_SIZE == 1 ) { \
6486 width = buffer[offset+IMAGE_WIDTH_OFFSET]; \
6487 } else { \
6488 width = 256*buffer[offset+IMAGE_WIDTH_OFFSET] + buffer[offset+IMAGE_WIDTH_OFFSET+1]; \
6489 }
6490 #define IMAGE_GET_HEIGHT( buffer, offset, height ) \
6491 if ( IMAGE_HEIGHT_SIZE == 1 ) { \
6492 height = buffer[offset+IMAGE_HEIGHT_OFFSET]; \
6493 } else { \
6494 height = 256*buffer[offset+IMAGE_HEIGHT_OFFSET] + buffer[offset+IMAGE_HEIGHT_OFFSET+1]; \
6495 }
6496#else
6497 #define ENDIANESSVALUE 0 /* little endian */
6498 #define IMAGE_GET_WIDTH( buffer, offset, width ) \
6499 if ( IMAGE_WIDTH_SIZE == 1 ) { \
6500 width = buffer[offset+IMAGE_WIDTH_OFFSET]; \
6501 } else { \
6502 width = buffer[offset+IMAGE_WIDTH_OFFSET] + 256 * buffer[offset+IMAGE_WIDTH_OFFSET+1]; \
6503 }
6504 #define IMAGE_GET_HEIGHT( buffer, offset, height ) \
6505 if ( IMAGE_HEIGHT_SIZE == 1 ) { \
6506 height = buffer[offset+IMAGE_HEIGHT_OFFSET]; \
6507 } else { \
6508 height = buffer[offset+IMAGE_HEIGHT_OFFSET] + 256 * buffer[offset+IMAGE_HEIGHT_OFFSET+1]; \
6509 }
6510#endif
6511
6512#ifdef __BETA__
6513 #define BETAVALUE 1
6514#else
6515 #define BETAVALUE 0
6516#endif
6517
6518#endif
int size
Definition _optimizer.c:678
unsigned char MemoryBlock
Definition msc1.h:90
struct _SIDFILE SIDFILE
#define pop()
Definition sidreloc.c:326
int arrayIndexesDirectEach[MAX_ARRAY_DIMENSIONS]
Definition ugbc.h:959
char * arrayIndexesEach[MAX_ARRAY_DIMENSIONS]
Definition ugbc.h:954
int arrayIndexes
Definition ugbc.h:949
struct _ImageDescriptor * frames
Definition ugbc.h:939
struct _ImageDescriptor * image
Definition ugbc.h:925
int frameHeight
Definition ugbc.h:928
int async
Definition ugbc.h:2076
AudioDeviceName target
Definition ugbc.h:2077
Structure of a single bank.
Definition ugbc.h:150
int remains
Definition ugbc.h:171
int address
Definition ugbc.h:159
int baseAddress
Definition ugbc.h:174
char * name
Definition ugbc.h:156
int id
Definition ugbc.h:153
struct _Bank * next
Definition ugbc.h:185
char * data
Definition ugbc.h:177
int defaultResident
Definition ugbc.h:182
int space
Definition ugbc.h:168
BankType type
Definition ugbc.h:162
int bankAddress
Definition ugbc.h:180
char * filename
Definition ugbc.h:165
Definition ugbc.h:2162
int sourceCount
Definition ugbc.h:2168
int usedMemory
Definition ugbc.h:2167
char * name
Definition ugbc.h:2164
int freeRegisters
Definition ugbc.h:2166
char * sources[MAX_TEMPORARY_STORAGE]
Definition ugbc.h:2169
char * realName
Definition ugbc.h:2165
Structure of a single conditional jump.
Definition ugbc.h:1360
struct _Conditional * next
Definition ugbc.h:1378
int caseElse
Definition ugbc.h:1375
int index
Definition ugbc.h:1372
ConditionalType type
Definition ugbc.h:1363
char * label
Definition ugbc.h:1366
Variable * expression
Definition ugbc.h:1369
OptionParameterValued slot
Definition ugbc.h:407
ConfigureGMCParameters gmc
Definition ugbc.h:419
ConfigureSN76489Parameters sn76489
Definition ugbc.h:421
OptionParameterValued address
Definition ugbc.h:413
int width
Definition ugbc.h:2209
int id
Definition ugbc.h:2204
int y1
Definition ugbc.h:2206
int x1
Definition ugbc.h:2205
int y2
Definition ugbc.h:2208
int height
Definition ugbc.h:2210
int x2
Definition ugbc.h:2207
Structure of a single constant.
Definition ugbc.h:797
double valueFloating
Definition ugbc.h:825
StaticString * valueString
Definition ugbc.h:820
char * name
Definition ugbc.h:800
char * relative
Definition ugbc.h:829
int emitted
Definition ugbc.h:827
int value
Definition ugbc.h:815
ConstantType type
Definition ugbc.h:805
int imported
Definition ugbc.h:810
struct _Constant * next
Definition ugbc.h:832
char * realName
Definition ugbc.h:803
CopperOperation operation
Definition ugbc.h:2243
struct _CopperInstruction * next
Definition ugbc.h:2246
int mode
Definition ugbc.h:2253
char * name
Definition ugbc.h:2252
struct _CopperInstruction * first
Definition ugbc.h:2254
struct _CopperList * next
Definition ugbc.h:2255
int cpu_math_mul2_const_16bit_generated[16]
Definition ugbc.h:2084
int cpu_math_div_nbit_to_nbit_const[32]
Definition ugbc.h:2087
int cpu_math_mul2_const_8bit_generated[8]
Definition ugbc.h:2083
int cpu_math_div_nbit_to_nbit[32]
Definition ugbc.h:2086
int cpu_math_mul_nbit_to_nbit[32]
Definition ugbc.h:2085
int space
Definition ugbc.h:1970
int count
Definition ugbc.h:1969
FloatTypePrecision precision
Definition ugbc.h:2176
struct _DataDataSegment * next
Definition ugbc.h:2181
int absoluteAddress
Definition ugbc.h:2177
char * data
Definition ugbc.h:2178
VariableType type
Definition ugbc.h:2175
struct _DataSegment * next
Definition ugbc.h:2198
DataDataSegment * data
Definition ugbc.h:2196
int lineNumber
Definition ugbc.h:2193
char * name
Definition ugbc.h:2191
int absoluteAddress
Definition ugbc.h:2194
VariableType type
Definition ugbc.h:2187
int isNumeric
Definition ugbc.h:2189
char * realName
Definition ugbc.h:2192
int fp_single_sub
Definition ugbc.h:1904
int create_vector
Definition ugbc.h:1847
int fp_c_times_bde
Definition ugbc.h:1862
int fp_fast_mod1
Definition ugbc.h:1885
int vars2
Definition ugbc.h:1731
int msc1
Definition ugbc.h:1937
int fp_fast_sin
Definition ugbc.h:1882
int vg5000vars
Definition ugbc.h:1769
int pc128audio
Definition ugbc.h:1828
int fp_single_sin
Definition ugbc.h:1907
int ef936xvars
Definition ugbc.h:1784
int scroll
Definition ugbc.h:1812
int fp_fast_div_pow2
Definition ugbc.h:1892
int gtiastartup
Definition ugbc.h:1758
int tiles
Definition ugbc.h:1824
int fp_single_neg
Definition ugbc.h:1910
int sliceimageextract
Definition ugbc.h:1822
int draw
Definition ugbc.h:1842
int fp_fast_bg
Definition ugbc.h:1889
int create_path
Definition ugbc.h:1846
int vdcvarsGraphic
Definition ugbc.h:1748
int c128zvarsGraphic
Definition ugbc.h:1776
int vic1vars
Definition ugbc.h:1739
int vdcvars
Definition ugbc.h:1747
int fp_common_str
Definition ugbc.h:1864
int plot
Definition ugbc.h:1788
int fp_common
Definition ugbc.h:1856
int fp_single_cmp
Definition ugbc.h:1906
int colecovars
Definition ugbc.h:1770
int msprite
Definition ugbc.h:1727
int sn76489startup
Definition ugbc.h:1835
int tms9918varsGraphic
Definition ugbc.h:1779
int fp_fast_cos
Definition ugbc.h:1883
int msx1vars
Definition ugbc.h:1765
int vic2zvarsGraphic
Definition ugbc.h:1745
int wait_key_or_fire
Definition ugbc.h:1944
int memorize
Definition ugbc.h:1949
int dsave
Definition ugbc.h:1935
int fp_single_add
Definition ugbc.h:1903
int vScrollText
Definition ugbc.h:1799
int hex2bin
Definition ugbc.h:1962
int bar
Definition ugbc.h:1843
int fp_single_cos
Definition ugbc.h:1908
int audio1bitnoirq
Definition ugbc.h:1838
int sliceimagecopy
Definition ugbc.h:1821
int screen
Definition ugbc.h:1953
int flipimagey
Definition ugbc.h:1939
int cpuspeed
Definition ugbc.h:1963
int sidplayer
Definition ugbc.h:1943
int anticstartup
Definition ugbc.h:1756
int fp_mul24_stack_based
Definition ugbc.h:1860
int syscall
Definition ugbc.h:1958
int vdczstartup
Definition ugbc.h:1752
int encrypt
Definition ugbc.h:1960
int fp_fast_from_16
Definition ugbc.h:1874
int blitimage
Definition ugbc.h:1820
int fp_single_amean
Definition ugbc.h:1917
int bank
Definition ugbc.h:1936
int protothread
Definition ugbc.h:1823
int draw_string
Definition ugbc.h:1925
int bitmap
Definition ugbc.h:1738
int back
Definition ugbc.h:1729
int tedvarsGraphic
Definition ugbc.h:1754
int remember
Definition ugbc.h:1948
int c6847bstartup
Definition ugbc.h:1736
int c6847bvars
Definition ugbc.h:1737
int fp_single_mulpow2
Definition ugbc.h:1916
int textEncodedAt
Definition ugbc.h:1791
int gtiapreproc
Definition ugbc.h:1761
int dload
Definition ugbc.h:1934
int fp_fast_tan
Definition ugbc.h:1888
int serial
Definition ugbc.h:1947
int fp_fast_mul
Definition ugbc.h:1870
int paint
Definition ugbc.h:1927
int gprint
Definition ugbc.h:1959
int raster
Definition ugbc.h:1813
int draw_tsb_string
Definition ugbc.h:1926
int audio1startup
Definition ugbc.h:1837
int fp_div24_24
Definition ugbc.h:1865
int play_string
Definition ugbc.h:1928
int c128zvars
Definition ugbc.h:1775
int fp_fast_pow10_lut
Definition ugbc.h:1872
int fp_single_vars
Definition ugbc.h:1894
int gtiavarsGraphic
Definition ugbc.h:1760
int vScroll
Definition ugbc.h:1798
int fade
Definition ugbc.h:1850
int fp_fast_to_16
Definition ugbc.h:1876
int fp_fast_from_8
Definition ugbc.h:1875
int fp_single_div
Definition ugbc.h:1905
int dojo_fujinet
Definition ugbc.h:1952
int vz200vars
Definition ugbc.h:1839
int numberToString
Definition ugbc.h:1796
int vic2zvars
Definition ugbc.h:1744
int sprite
Definition ugbc.h:1726
int fp_single_to_8
Definition ugbc.h:1902
int fp_fast_neg
Definition ugbc.h:1886
int read_data_unsafe
Definition ugbc.h:1923
int fp_single_abs
Definition ugbc.h:1912
int ay8910startup
Definition ugbc.h:1833
int fp_pushpop
Definition ugbc.h:1861
int fp_fast_div
Definition ugbc.h:1880
int vScrollTextDown
Definition ugbc.h:1801
int textEncodedAtGraphic
Definition ugbc.h:1794
int sidvars
Definition ugbc.h:1826
int travel_path
Definition ugbc.h:1849
int fp_single_horner_step
Definition ugbc.h:1911
int c6847vars
Definition ugbc.h:1735
int fp_format_str
Definition ugbc.h:1873
int clsText
Definition ugbc.h:1804
int putimagereu
Definition ugbc.h:1815
int cgastartup
Definition ugbc.h:1783
int vz200startup
Definition ugbc.h:1840
int startup2
Definition ugbc.h:1733
int console
Definition ugbc.h:1941
int pccgavars
Definition ugbc.h:1771
int ellipse
Definition ugbc.h:1844
int font
Definition ugbc.h:1825
int vdczvarsGraphic
Definition ugbc.h:1751
int ef9345startup
Definition ugbc.h:1787
int pokeystartup
Definition ugbc.h:1831
int sc3000vars
Definition ugbc.h:1767
int vic1startup
Definition ugbc.h:1740
int ay8910vars
Definition ugbc.h:1832
int tms9918vars
Definition ugbc.h:1778
int duff
Definition ugbc.h:1921
int fp_single_mulu8_divpow2
Definition ugbc.h:1918
int fp_single_tan
Definition ugbc.h:1913
int fp_fast_cmp
Definition ugbc.h:1881
int fp_fast_geomean
Definition ugbc.h:1891
int fp_single_to_16
Definition ugbc.h:1901
int chain
Definition ugbc.h:1957
int textVScrollScreen
Definition ugbc.h:1802
int rotate_vector
Definition ugbc.h:1848
int flash
Definition ugbc.h:1956
int fp_fast_add
Definition ugbc.h:1878
int fp_single_geomean
Definition ugbc.h:1919
int tedstartup
Definition ugbc.h:1755
int ef936xstartup
Definition ugbc.h:1785
int dojo
Definition ugbc.h:1951
int sg1000vars
Definition ugbc.h:1768
int fp_mul16
Definition ugbc.h:1859
int vbl
Definition ugbc.h:1723
int doubleBuffer
Definition ugbc.h:1829
int tms9918startup
Definition ugbc.h:1780
int fp_single_mul
Definition ugbc.h:1895
int putimageram
Definition ugbc.h:1816
int dcommon
Definition ugbc.h:1933
int clsGraphic
Definition ugbc.h:1805
int vdczvars
Definition ugbc.h:1750
int fp_fast_to_string
Definition ugbc.h:1871
int flipimagex
Definition ugbc.h:1938
int pen
Definition ugbc.h:1946
int fp_single_sqrt
Definition ugbc.h:1915
int joystick
Definition ugbc.h:1724
int textClineGraphic
Definition ugbc.h:1808
int fp_single_mod1
Definition ugbc.h:1909
int fp_single_to_string
Definition ugbc.h:1898
int vic2zstartup
Definition ugbc.h:1746
int center
Definition ugbc.h:1955
int fp_mul4
Definition ugbc.h:1857
int fp_sqrt24_mant
Definition ugbc.h:1866
int scancode
Definition ugbc.h:1790
int fp_vars
Definition ugbc.h:1854
int fp_fast_amean
Definition ugbc.h:1890
int vic2vars
Definition ugbc.h:1741
int fujinet
Definition ugbc.h:1950
int fp_fast_sub
Definition ugbc.h:1879
int bitsToString
Definition ugbc.h:1797
int fp_single_bgi
Definition ugbc.h:1914
int startup
Definition ugbc.h:1732
int fp_mov4
Definition ugbc.h:1863
int sn76489vars
Definition ugbc.h:1834
int cpcvarsGraphic
Definition ugbc.h:1773
int zxvars
Definition ugbc.h:1764
int textEncodedAtTextRaw
Definition ugbc.h:1793
int puttilemap
Definition ugbc.h:1819
int vars
Definition ugbc.h:1730
int sidstartup
Definition ugbc.h:1827
Embedded embedded
Definition ugbc.h:1852
int cgavarsGraphic
Definition ugbc.h:1782
int tedvars
Definition ugbc.h:1753
int sn76489startup2
Definition ugbc.h:1836
int cpcvars
Definition ugbc.h:1772
int dojo_fujinet_init
Definition ugbc.h:1954
int vdcstartup
Definition ugbc.h:1749
int c6847startup
Definition ugbc.h:1734
int clsBox
Definition ugbc.h:1806
int decrypt
Definition ugbc.h:1961
int ef9345vars
Definition ugbc.h:1786
int fp_single_pow10_lut
Definition ugbc.h:1896
int fp_sqrt32
Definition ugbc.h:1867
int textHScrollScreen
Definition ugbc.h:1811
int cpcstartup
Definition ugbc.h:1774
int textHScroll
Definition ugbc.h:1809
int music
Definition ugbc.h:1942
int textEncodedAtGraphicRaw
Definition ugbc.h:1795
int fp_fast_sqr
Definition ugbc.h:1884
int text_newline
Definition ugbc.h:1945
int gtiavars
Definition ugbc.h:1759
int fp_div32_16
Definition ugbc.h:1868
int vic2startup
Definition ugbc.h:1743
int anticvars
Definition ugbc.h:1757
int textHScrollLine
Definition ugbc.h:1810
int timer
Definition ugbc.h:1931
int textCline
Definition ugbc.h:1807
int random
Definition ugbc.h:1940
int dstring
Definition ugbc.h:1789
int cgavars
Definition ugbc.h:1781
int getimage
Definition ugbc.h:1818
int fp_fast_to_8
Definition ugbc.h:1877
int sqr
Definition ugbc.h:1728
int irq
Definition ugbc.h:1924
int gimestartup
Definition ugbc.h:1763
int pokeyvars
Definition ugbc.h:1830
int c128zstartup
Definition ugbc.h:1777
int fp_fast_abs
Definition ugbc.h:1887
int cls
Definition ugbc.h:1803
int textEncodedAtText
Definition ugbc.h:1792
int vScrollTextUp
Definition ugbc.h:1800
int putimage
Definition ugbc.h:1814
int gbvars
Definition ugbc.h:1766
int fp_single_mul24
Definition ugbc.h:1897
int fp_single_from_16
Definition ugbc.h:1899
int keyboard
Definition ugbc.h:1725
int fellipse
Definition ugbc.h:1845
int vic2varsGraphic
Definition ugbc.h:1742
int putimageramrle
Definition ugbc.h:1817
int fp_mul24
Definition ugbc.h:1858
int put_tilemap
Definition ugbc.h:1929
int fp_single_from_8
Definition ugbc.h:1900
int gimevars
Definition ugbc.h:1762
int conditional
Definition ugbc.h:2121
int valueCount
Definition ugbc.h:2125
char * values[MAX_TEMPORARY_STORAGE]
Definition ugbc.h:2124
char * line
Definition ugbc.h:2118
Macro * macro
Definition ugbc.h:2122
Macro * currentMacro
Definition ugbc.h:2123
int current
Definition ugbc.h:2119
char * lines[MAX_TEMPORARY_STORAGE]
Definition ugbc.h:2126
int excluded[MAX_NESTED_ARRAYS]
Definition ugbc.h:2120
int lineCount
Definition ugbc.h:2127
int cpu_move_8bit_with_offset2
Definition ugbc.h:1708
int cpu_not_16bit
Definition ugbc.h:1605
int cpu_store_8bit_with_offset
Definition ugbc.h:1709
int cpu_xor_8bit
Definition ugbc.h:1603
int cpu_math_sub_16bit_with_8bit
Definition ugbc.h:1652
int cpu_math_mul2_const_nbit
Definition ugbc.h:1647
int cpu_random_16bit
Definition ugbc.h:1660
int cpu_complement2_16bit
Definition ugbc.h:1713
int cpu_dsdefine
Definition ugbc.h:1699
int cpu_math_sub_16bit
Definition ugbc.h:1649
int cpu_dsalloc
Definition ugbc.h:1700
int cpu_xor_16bit
Definition ugbc.h:1608
int cpu_bneq
Definition ugbc.h:1546
int cpu_inc
Definition ugbc.h:1563
int cpu_math_add_nbit_const
Definition ugbc.h:1622
int cpu_store_8bit_with_offset2
Definition ugbc.h:1710
int cpu_store_16bit
Definition ugbc.h:1663
int cpu_random_8bit
Definition ugbc.h:1662
int cpu_mem_move_direct
Definition ugbc.h:1668
int cpu_swap_16bit
Definition ugbc.h:1609
int cpu_and_16bit
Definition ugbc.h:1606
int cpu_math_mul_16bit_to_32bit
Definition ugbc.h:1638
int cpu_less_than_8bit
Definition ugbc.h:1577
int cpu_math_add_16bit
Definition ugbc.h:1615
int cpu_addressof_16bit
Definition ugbc.h:1654
int cpu_dsdescriptor
Definition ugbc.h:1706
int cpu_sqroot
Definition ugbc.h:1715
int cpu_math_double_8bit
Definition ugbc.h:1637
int cpu_logical_not_8bit
Definition ugbc.h:1595
int cpu_or_8bit
Definition ugbc.h:1601
int cpu_busy_wait
Definition ugbc.h:1547
int cpu_math_mul2_const_32bit
Definition ugbc.h:1645
int cpu_complement2_32bit
Definition ugbc.h:1714
int cpu_swap_8bit
Definition ugbc.h:1604
int cpu_random
Definition ugbc.h:1659
int cpu_move_16bit
Definition ugbc.h:1653
int cpu_math_add_16bit_with_8bit
Definition ugbc.h:1618
int cpu_compare_and_branch_8bit
Definition ugbc.h:1555
int cpu_string_sub
Definition ugbc.h:1717
int cpu_math_add_8bit
Definition ugbc.h:1623
int cpu_compare_and_branch_char_const
Definition ugbc.h:1560
int cpu_compare_and_branch_8bit_const
Definition ugbc.h:1559
int cpu_greater_than_32bit
Definition ugbc.h:1580
int cpu_move_16bit_indirect2
Definition ugbc.h:1688
int cpu_math_div2_const_nbit
Definition ugbc.h:1634
int cpu_move_8bit_with_offset
Definition ugbc.h:1707
int cpu_move_8bit_indirect_with_offset
Definition ugbc.h:1694
int cpu_inc_32bit
Definition ugbc.h:1565
int cpu_swap_32bit
Definition ugbc.h:1614
int cpu_move_32bit
Definition ugbc.h:1655
int cpu_label
Definition ugbc.h:1593
int cpu_and_8bit
Definition ugbc.h:1599
int cpu_dsalloc_size
Definition ugbc.h:1711
int cpu_math_sub_32bit
Definition ugbc.h:1650
int cpu_less_than_8bit_const
Definition ugbc.h:1573
int cpu_math_div2_const_32bit
Definition ugbc.h:1632
int cpu_math_double_32bit
Definition ugbc.h:1636
int cpu_move_32bit_indirect
Definition ugbc.h:1690
int cpu_less_than_nbit_const
Definition ugbc.h:1574
int cpu_compare_8bit
Definition ugbc.h:1553
int cpu_fill_indirect
Definition ugbc.h:1681
int cpu_inc_16bit
Definition ugbc.h:1564
int cpu_end
Definition ugbc.h:1586
int cpu_move_8bit_indirect2
Definition ugbc.h:1684
int cpu_dec_16bit
Definition ugbc.h:1568
int cpu_math_add_16bit_const
Definition ugbc.h:1616
int cpu_store_32bit
Definition ugbc.h:1664
int cpu_math_div2_const_8bit
Definition ugbc.h:1633
int cpu_compare_memory
Definition ugbc.h:1672
int cpu_bveq
Definition ugbc.h:1548
int cpu_bvneq
Definition ugbc.h:1549
int cpu_fill_blocks
Definition ugbc.h:1584
int cpu_math_complement_const_16bit
Definition ugbc.h:1628
int cpu_dsgc
Definition ugbc.h:1705
int cpu_complement2_8bit
Definition ugbc.h:1712
int cpu_less_than_32bit
Definition ugbc.h:1576
int cpu_hex_to_string
Definition ugbc.h:1696
int cpu_limit_16bit
Definition ugbc.h:1594
int cpu_math_sub_nbit
Definition ugbc.h:1648
int cpu_greater_than_nbit
Definition ugbc.h:1582
int cpu_bit_check_extended
Definition ugbc.h:1697
int cpu_logical_or_8bit
Definition ugbc.h:1597
int cpu_and_8bit_const
Definition ugbc.h:1600
int cpu_less_than_16bit_const
Definition ugbc.h:1571
int cpu_convert_string_into_16bit
Definition ugbc.h:1680
int cpu_ztoa
Definition ugbc.h:1543
int cpu_flip
Definition ugbc.h:1682
int cpu_compare_and_branch_16bit
Definition ugbc.h:1556
int cpu_compare_and_branch_16bit_const
Definition ugbc.h:1557
int cpu_dec_32bit
Definition ugbc.h:1569
int cpu_dsresize
Definition ugbc.h:1703
int cpu_move_8bit_indirect2_16bit
Definition ugbc.h:1686
int cpu_store_char
Definition ugbc.h:1666
int cpu_halt
Definition ugbc.h:1585
int cpu_math_add_8bit_const
Definition ugbc.h:1624
int cpu_logical_and_8bit
Definition ugbc.h:1596
int cpu_greater_than_memory_size
Definition ugbc.h:1677
int cpu_store_8bit
Definition ugbc.h:1665
int cpu_compare_16bit
Definition ugbc.h:1551
int cpu_greater_than_16bit
Definition ugbc.h:1579
int cpu_greater_than_8bit
Definition ugbc.h:1581
int cpu_number_to_string
Definition ugbc.h:1693
int cpu_math_add_16bit_with_16bit
Definition ugbc.h:1617
int cpu_jump
Definition ugbc.h:1587
int cpu_ei
Definition ugbc.h:1562
int cpu_pop
Definition ugbc.h:1592
int cpu_math_and_const_16bit
Definition ugbc.h:1625
int cpu_less_than_32bit_const
Definition ugbc.h:1572
int cpu_call_indirect
Definition ugbc.h:1589
int cpu_less_than_memory_size
Definition ugbc.h:1675
int cpu_random_32bit
Definition ugbc.h:1661
int cpu_math_add_nbit
Definition ugbc.h:1621
int cpu_xor_32bit
Definition ugbc.h:1613
int cpu_dswrite
Definition ugbc.h:1702
int cpu_move_32bit_indirect2
Definition ugbc.h:1691
int cpu_math_mul2_const_8bit
Definition ugbc.h:1646
int cpu_beq
Definition ugbc.h:1545
int cpu_less_than_nbit
Definition ugbc.h:1578
int cpu_mem_move_size
Definition ugbc.h:1669
int cpu_greater_than_memory
Definition ugbc.h:1676
int cpu_move_16bit_indirect
Definition ugbc.h:1687
int cpu_msc1_uncompress
Definition ugbc.h:1716
int cpu_compare_32bit
Definition ugbc.h:1552
int cpu_math_mul_8bit_to_16bit
Definition ugbc.h:1639
int cpu_math_double_16bit
Definition ugbc.h:1635
int cpu_mem_move_direct_indirect_size
Definition ugbc.h:1671
int cpu_or_32bit
Definition ugbc.h:1612
int cpu_move_8bit_indirect_with_offset2
Definition ugbc.h:1698
int cpu_math_div_nbit_to_nbit
Definition ugbc.h:1643
int cpu_uppercase
Definition ugbc.h:1678
int cpu_lowercase
Definition ugbc.h:1679
int cpu_math_complement_const_8bit
Definition ugbc.h:1630
int cpu_return
Definition ugbc.h:1591
int cpu_move_8bit_indirect2_8bit
Definition ugbc.h:1685
int cpu_dsresize_size
Definition ugbc.h:1704
int cpu_and_32bit
Definition ugbc.h:1611
int cpu_math_div_32bit_to_16bit
Definition ugbc.h:1640
int cpu_or_8bit_const
Definition ugbc.h:1602
int cpu_not_8bit
Definition ugbc.h:1598
int cpu_compare_nbit
Definition ugbc.h:1554
int cpu_combine_nibbles
Definition ugbc.h:1550
int cpu_not_32bit
Definition ugbc.h:1610
int cpu_less_than_memory
Definition ugbc.h:1674
int cpu_ctoa
Definition ugbc.h:1544
int cpu_math_div2_const_16bit
Definition ugbc.h:1631
int cpu_math_add_32bit_const
Definition ugbc.h:1620
int cpu_compare_memory_size
Definition ugbc.h:1673
int cpu_math_mul2_const_16bit
Definition ugbc.h:1644
int cpu_call
Definition ugbc.h:1588
int cpu_move_16bit_indirect2_8bit
Definition ugbc.h:1689
int cpu_mem_move
Definition ugbc.h:1667
int cpu_bits_to_string
Definition ugbc.h:1695
int cpu_peek
Definition ugbc.h:1657
int cpu_mem_move_direct_size
Definition ugbc.h:1670
int cpu_dec
Definition ugbc.h:1567
int cpu_dsfree
Definition ugbc.h:1701
int cpu_move_8bit
Definition ugbc.h:1656
int cpu_di
Definition ugbc.h:1561
int cpu_math_complement_const_32bit
Definition ugbc.h:1629
int cpu_jump_indirect
Definition ugbc.h:1590
int cpu_math_div_8bit_to_8bit
Definition ugbc.h:1642
int cpu_fill
Definition ugbc.h:1583
int cpu_math_add_32bit
Definition ugbc.h:1619
int cpu_inc_nbit
Definition ugbc.h:1566
int cpu_compare_and_branch_32bit_const
Definition ugbc.h:1558
int cpu_poke
Definition ugbc.h:1658
int cpu_math_sub_8bit
Definition ugbc.h:1651
int cpu_math_and_const_8bit
Definition ugbc.h:1627
int cpu_move_8bit_indirect
Definition ugbc.h:1683
int cpu_or_16bit
Definition ugbc.h:1607
int cpu_math_div_16bit_to_16bit
Definition ugbc.h:1641
int cpu_less_than_16bit
Definition ugbc.h:1575
int cpu_math_and_const_32bit
Definition ugbc.h:1626
int cpu_bit_inplace
Definition ugbc.h:1692
int cpu_dec_nbit
Definition ugbc.h:1570
Structure of compilation environment.
Definition ugbc.h:2269
Variable * tempResidentVariables
Definition ugbc.h:2595
int animationEaseInFrames
Definition ugbc.h:3199
char * optionalX
Definition ugbc.h:3189
int currentSourceLineAnalyzed
Definition ugbc.h:3025
Conditional * conditionals
Definition ugbc.h:2664
char * bufferOutput[MAX_BUFFERED_OUTPUT]
Definition ugbc.h:3340
char * soundDuration[MAX_TEMPORARY_STORAGE]
Definition ugbc.h:3103
int embeddedStatsEnabled
Definition ugbc.h:2927
int deferredEmbeddedSize[MAX_TEMPORARY_STORAGE]
Definition ugbc.h:3095
LoadedFile * loadedFiles
Definition ugbc.h:2636
TileDescriptors * tilesets[MAX_TILESETS]
Definition ugbc.h:2949
int disableMemoryAreas
Definition ugbc.h:2691
int centerWithoutNewLine
Definition ugbc.h:2968
int screenTilesWidth
Definition ugbc.h:2880
char * parametersEach[MAX_PARAMETERS]
Definition ugbc.h:2790
int resolutionY
Definition ugbc.h:3070
int animationNextWithEaseIn
Definition ugbc.h:3205
int screenShades
Definition ugbc.h:2865
Variable * procedureVariables
Definition ugbc.h:2626
int sidRelocAddress
Definition ugbc.h:3223
int lineInput
Definition ugbc.h:3118
int fontHeight
Definition ugbc.h:2905
int defaultUnsignedType
Definition ugbc.h:3082
int chainUsed
Definition ugbc.h:3287
int lastDefinedLabelIsNumeric
Definition ugbc.h:2590
int currentStripMaxId
Definition ugbc.h:3289
BankAccessOptimization bankAccessOptimization
Definition ugbc.h:3269
int defaultArraySize
Definition ugbc.h:3240
Storage * storage
Definition ugbc.h:2526
int stackStartAddress
Definition ugbc.h:3296
int animationEaseOutFrames
Definition ugbc.h:3202
int currentBufferOutput
Definition ugbc.h:3335
Label * storedLabels
Definition ugbc.h:2555
int keyPressDutyCycle
Definition ugbc.h:3120
char * listingFileName
Definition ugbc.h:2305
char * currentFieldName
Definition ugbc.h:3263
Console activeConsole
Definition ugbc.h:2910
int anyProtothread
Definition ugbc.h:2835
FILE * configurationFile
Definition ugbc.h:3314
char * arrayIndexesEach[MAX_NESTED_ARRAYS][MAX_ARRAY_DIMENSIONS]
Definition ugbc.h:2738
int scaleY
Definition ugbc.h:3235
int bitPosition
Definition ugbc.h:3155
Offsetting * offsetting
Definition ugbc.h:2937
char * temporaryPath
Definition ugbc.h:2360
char * sliceImageX
Definition ugbc.h:3075
int lastThreadIdentifierUsed
Definition ugbc.h:3099
int freeImageWidth
Definition ugbc.h:3088
int resolutionX
Definition ugbc.h:3065
char * currentExpression
Definition ugbc.h:3262
int currentMode
Definition ugbc.h:2696
Bank * banks[BANK_TYPE_COUNT]
Definition ugbc.h:2514
int analysis
Definition ugbc.h:2365
OptionParameterValue * optionParameters
Definition ugbc.h:3175
int compressionForbidden
Definition ugbc.h:3169
int installChainTool
Definition ugbc.h:2385
int gprintInline
Definition ugbc.h:3292
int optionClip
Definition ugbc.h:2467
FILE * asmFile
Definition ugbc.h:3309
int clamp
Definition ugbc.h:2770
int protothread
Definition ugbc.h:2830
int printSafe
Definition ugbc.h:3273
JoystickConfig joystickConfig
Definition ugbc.h:2437
int dojoOnVirtualizedFujiNet
Definition ugbc.h:3245
char * travelYF
Definition ugbc.h:3256
int maxExpansionBankSize[MAX_RESIDENT_SHAREDS]
Definition ugbc.h:3010
VariableType defaultVariableType
Definition ugbc.h:2956
int address
Definition ugbc.h:2780
Console consoles[MAX_CONSOLES]
Definition ugbc.h:2916
char * flashVars[128]
Definition ugbc.h:3284
int screenTilesHeight
Definition ugbc.h:2885
char * configurationFileName
Definition ugbc.h:2295
char * executerFileName
Definition ugbc.h:2315
char * travelXF
Definition ugbc.h:3253
char * dojoObjectName
Definition ugbc.h:3250
Program program
Definition ugbc.h:3179
int bufferOutputSize[MAX_BUFFERED_OUTPUT]
Definition ugbc.h:3345
int arrayDimensions
Definition ugbc.h:2718
int originY
Definition ugbc.h:3050
char * dir2atrFileName
Definition ugbc.h:2340
FILE * additionalInfoFile
Definition ugbc.h:3330
OutputFileType outputFileType
Definition ugbc.h:2452
int consoleTilesHeight
Definition ugbc.h:2895
int animationReverse
Definition ugbc.h:3211
RgbConverterFunction currentRgbConverterFunction
Definition ugbc.h:2711
int clsCalledOnce
Definition ugbc.h:3183
int optionCallAsGoto
Definition ugbc.h:2961
Variable * tempVariables[MAX_PROCEDURES]
Definition ugbc.h:2606
int atLeastOneSoundNoteDurationSymbolic
Definition ugbc.h:3106
Type * types
Definition ugbc.h:2538
int offsetX
Definition ugbc.h:3237
FileStorage * currentFileStorage
Definition ugbc.h:2536
char * compilerFileName
Definition ugbc.h:2320
Label * referredLabels
Definition ugbc.h:2550
int movementDeltaY
Definition ugbc.h:3215
int putImageRefUnsafe
Definition ugbc.h:3271
int animationWaitVbl
Definition ugbc.h:3207
int yylineno
Definition ugbc.h:2496
int movementDeltaX
Definition ugbc.h:3214
int protothreadStep
Definition ugbc.h:2840
char * decbFileName
Definition ugbc.h:2335
Strip * currentStrip
Definition ugbc.h:3290
DataSegment * dataSegment
Definition ugbc.h:2568
FILE * debuggerLabelsFile
Definition ugbc.h:3319
char * debuggerLabelsFileName
Definition ugbc.h:2300
int sandbox
Definition ugbc.h:2990
int returnsAsmioEach[MAX_PARAMETERS]
Definition ugbc.h:2820
int bitByte
Definition ugbc.h:3160
Dialect dialect
Definition ugbc.h:3181
int fontWidth
Definition ugbc.h:2900
char * currentSprite
Definition ugbc.h:2753
VariableType parametersTypeEach[MAX_PARAMETERS]
Definition ugbc.h:2800
int parameters
Definition ugbc.h:2785
Bank * expansionBanks
Definition ugbc.h:3005
int hasCGoto
Definition ugbc.h:2654
int colorImplicit
Definition ugbc.h:2970
int tenLinerRulesEnforced
Definition ugbc.h:2985
int verticalOverlapRequired
Definition ugbc.h:3231
StaticString * strings
Definition ugbc.h:2641
int peepholeOptimizationLimit
Definition ugbc.h:2370
int transparencyCoarse
Definition ugbc.h:3260
int returns
Definition ugbc.h:2810
MemoryArea * memoryAreas
Definition ugbc.h:2689
int randomizeTimerCalled
Definition ugbc.h:3247
int restoreDynamic
Definition ugbc.h:2573
int bitmaskNeeded
Definition ugbc.h:2659
int outputGeneratedFiles
Definition ugbc.h:3173
int currentProcedure
Definition ugbc.h:2601
int tilesetCount
Definition ugbc.h:2944
int originYDirection
Definition ugbc.h:3055
int animationEaseOutDelay
Definition ugbc.h:3203
NumberConfig numberConfig
Definition ugbc.h:2410
DString dstring
Definition ugbc.h:2405
int enableRle
Definition ugbc.h:2561
char * blitOR
Definition ugbc.h:2481
char * dsktoolsFileName
Definition ugbc.h:2345
int removeComments
Definition ugbc.h:3194
int animationPreserveBackground
Definition ugbc.h:3209
ConfigureParameters configureParameters
Definition ugbc.h:3177
int soundNoteValue[MAX_TEMPORARY_STORAGE]
Definition ugbc.h:3102
int removedAssemblyLines
Definition ugbc.h:3030
char * parsedLine
Definition ugbc.h:2491
int lastSoundNoteDuration
Definition ugbc.h:3105
Label * labels
Definition ugbc.h:2545
int paletteIndex
Definition ugbc.h:2980
int arrayNestedIndex
Definition ugbc.h:2728
char * threadIdentifier[MAX_TEMPORARY_STORAGE]
Definition ugbc.h:3097
char * optionalY
Definition ugbc.h:3190
int doubleBufferEnabled
Definition ugbc.h:2995
CopperList * copperList
Definition ugbc.h:3282
Constant * currentFieldsValues
Definition ugbc.h:3265
int ramSize
Definition ugbc.h:3171
MultiplexingSpriteConfig multiplexingSpriteConfig
Definition ugbc.h:2425
Variable * variables
Definition ugbc.h:2616
char * travelY
Definition ugbc.h:3255
Blit blit
Definition ugbc.h:2474
int paletteSelected
Definition ugbc.h:2975
int arrayDimensionsEach[MAX_ARRAY_DIMENSIONS]
Definition ugbc.h:2723
int animationDelay
Definition ugbc.h:3197
int frameOffsetX
Definition ugbc.h:3135
int screenColors
Definition ugbc.h:2870
char * sourceFileName
Definition ugbc.h:2280
int dataNeeded
Definition ugbc.h:2557
int sysCallUsed
Definition ugbc.h:3162
int parametersValueEach[MAX_PARAMETERS]
Definition ugbc.h:2805
int graphicsAtariBasicEnabled
Definition ugbc.h:3228
char * profileFileName
Definition ugbc.h:2310
int frameOriginX
Definition ugbc.h:3145
char * additionalInfoFileName
Definition ugbc.h:2355
int hasGameLoop
Definition ugbc.h:2646
Variable * currentArray
Definition ugbc.h:2748
int finalReturn
Definition ugbc.h:2462
Constant * constants
Definition ugbc.h:2611
char * asLinkerFileName
Definition ugbc.h:2350
int dynamicConsole
Definition ugbc.h:3298
FontConfig fontConfig
Definition ugbc.h:2415
int currentModeBW
Definition ugbc.h:2701
int frameBufferStart2
Definition ugbc.h:3116
char * cmdFileName
Definition ugbc.h:2325
int screenHeight
Definition ugbc.h:2860
int producedAssemblyLines
Definition ugbc.h:3015
Pattern * globalVariablePatterns
Definition ugbc.h:2631
char * upperLimit
Definition ugbc.h:2768
ScreenMode * screenModes
Definition ugbc.h:2516
int stackSize
Definition ugbc.h:3294
int leftReplace
Definition ugbc.h:3219
char * lowerLimit
Definition ugbc.h:2763
int uniqueResourceId
Definition ugbc.h:2508
int originX
Definition ugbc.h:3045
ProtothreadConfig protothreadConfig
Definition ugbc.h:2430
int getImageSafe
Definition ugbc.h:3276
int bytesProduced
Definition ugbc.h:3035
int lastDefinedLabelNumeric
Definition ugbc.h:2585
int clsSlow
Definition ugbc.h:3185
int optionExplicit
Definition ugbc.h:2457
int warningsEnabled
Definition ugbc.h:2380
int keyboardFullSupport
Definition ugbc.h:3187
int dojoOnFujiNet
Definition ugbc.h:3244
int uniqueId
Definition ugbc.h:2502
int movementDelay
Definition ugbc.h:3213
int resolutionUsed
Definition ugbc.h:3060
int arrayIndexes[MAX_NESTED_ARRAYS]
Definition ugbc.h:2733
FloatType floatType
Definition ugbc.h:2400
char * soundNote[MAX_TEMPORARY_STORAGE]
Definition ugbc.h:3101
int frameOriginY
Definition ugbc.h:3150
FILE * listingFile
Definition ugbc.h:3324
char * sliceImageY
Definition ugbc.h:3080
int bankedLoadDefault
Definition ugbc.h:2951
char * asmFileName
Definition ugbc.h:2285
Type * currentType
Definition ugbc.h:2540
char * blitAND
Definition ugbc.h:2480
char * dojoChannelName
Definition ugbc.h:3249
int insideCopperList
Definition ugbc.h:3280
int flashVarsIndex
Definition ugbc.h:3285
int consoleTilesWidth
Definition ugbc.h:2890
ArrayReference * travelYAR
Definition ugbc.h:3257
Embedded embeddedStats
Definition ugbc.h:2395
int originUsed
Definition ugbc.h:3040
SIDFILE * sidFiles
Definition ugbc.h:3221
char * procedureName
Definition ugbc.h:2775
Embedded embedded
Definition ugbc.h:2390
char * blitNOT
Definition ugbc.h:2482
int arrayIndexesDirectEach[MAX_NESTED_ARRAYS][MAX_ARRAY_DIMENSIONS]
Definition ugbc.h:2743
int frameOffsetY
Definition ugbc.h:3140
int frameWidth
Definition ugbc.h:3125
int frameBufferStart
Definition ugbc.h:3111
int optionReadSafe
Definition ugbc.h:2472
int optionExecAsGosub
Definition ugbc.h:2963
int previousProducedAssemblyLines
Definition ugbc.h:3020
KeyboardConfig keyboardConfig
Definition ugbc.h:2435
int residentDetectionEnabled
Definition ugbc.h:3192
int drawUsingTsbSyntax
Definition ugbc.h:3242
int transparencyUsed
Definition ugbc.h:3259
int offsetY
Definition ugbc.h:3238
int currentTileMode
Definition ugbc.h:2706
int defaultNarrowType
Definition ugbc.h:3084
TileDescriptors * descriptors
Definition ugbc.h:2939
GammaCorrection gammaCorrection
Definition ugbc.h:3000
int midReplace
Definition ugbc.h:3217
int paintBucketSize
Definition ugbc.h:3167
int horizontalOverlapRequired
Definition ugbc.h:3232
int checkBoundary
Definition ugbc.h:2713
VariableType returnsTypeEach[MAX_PARAMETERS]
Definition ugbc.h:2825
int profileCycles
Definition ugbc.h:2375
int dataLastAbsoluteAddress
Definition ugbc.h:3278
Field * currentField
Definition ugbc.h:3264
VariableType dataDataType
Definition ugbc.h:2850
Procedure * procedures
Definition ugbc.h:2621
int putImageSafe
Definition ugbc.h:3275
Storage * currentStorage
Definition ugbc.h:2531
char * appMakerFileName
Definition ugbc.h:2330
int screenTiles
Definition ugbc.h:2875
int freeImageHeight
Definition ugbc.h:3086
int protothreadForbid
Definition ugbc.h:2845
char * deferredEmbedded[MAX_TEMPORARY_STORAGE]
Definition ugbc.h:3093
int screenWidth
Definition ugbc.h:2855
int lineNeeded
Definition ugbc.h:2559
int defaultPaperColor
Definition ugbc.h:3226
AudioConfig audioConfig
Definition ugbc.h:2420
int lmarginAtariBasicEnabled
Definition ugbc.h:3229
int frameHeight
Definition ugbc.h:3130
int emptyProcedure
Definition ugbc.h:2932
int parametersAsmioEach[MAX_PARAMETERS]
Definition ugbc.h:2795
int animationEaseInDelay
Definition ugbc.h:3200
EmbedResult embedResult
Definition ugbc.h:2447
int printRaw
Definition ugbc.h:3274
AnimationType animationType
Definition ugbc.h:3196
char * returnsEach[MAX_PARAMETERS]
Definition ugbc.h:2815
int scaleX
Definition ugbc.h:3234
CpuOptimization cpuOptimization
Definition ugbc.h:3267
int horizontalScrollOff
Definition ugbc.h:3300
int soundDurationValue[MAX_TEMPORARY_STORAGE]
Definition ugbc.h:3104
Loop * loops
Definition ugbc.h:2669
int currentSpriteNumber
Definition ugbc.h:2758
int readDataUsed
Definition ugbc.h:2578
char * exeFileName
Definition ugbc.h:2290
ArrayReference * travelXAR
Definition ugbc.h:3254
Deployed deployed
Definition ugbc.h:2921
int runParallel
Definition ugbc.h:2652
int defaultPenColor
Definition ugbc.h:3225
int mspriteMsbokAddress
Definition ugbc.h:2563
char * lastDefinedLabel
Definition ugbc.h:2583
char * travelX
Definition ugbc.h:3252
VestigialConfig vestigialConfig
Definition ugbc.h:2442
char * name
Definition ugbc.h:1231
VariableType type
Definition ugbc.h:1233
struct _Field * next
Definition ugbc.h:1237
int offset
Definition ugbc.h:1235
Structure of a single file inside a storage.
Definition ugbc.h:192
struct _Variable * variable
Definition ugbc.h:207
char * targetName
Definition ugbc.h:201
int size
Definition ugbc.h:204
char * sourceName
Definition ugbc.h:198
char * content
Definition ugbc.h:210
struct _FileStorage * next
Definition ugbc.h:213
FloatTypePrecision precision
Definition ugbc.h:868
FloatTypeAngle angle
Definition ugbc.h:869
int schema
Definition ugbc.h:2063
int optimized
Definition ugbc.h:2064
int colorsCount
Definition ugbc.h:918
RGBi * colors
Definition ugbc.h:917
char * data
Definition ugbc.h:911
struct _ImageDescriptor * next
Definition ugbc.h:919
int notEmulated
Definition ugbc.h:1998
char separator
Definition ugbc.h:1982
Structure of a single label.
Definition ugbc.h:839
struct _Label * next
Definition ugbc.h:848
char * name
Definition ugbc.h:842
int number
Definition ugbc.h:845
char * fileName
Definition ugbc.h:1481
struct _LoadedFile * next
Definition ugbc.h:1486
Variable * variable
Definition ugbc.h:1483
Structure of a single loop.
Definition ugbc.h:1417
struct _Loop * next
Definition ugbc.h:1452
Variable * to
Definition ugbc.h:1435
Variable * stepResident
Definition ugbc.h:1444
LoopType type
Definition ugbc.h:1420
Variable * zero
Definition ugbc.h:1447
Variable * step
Definition ugbc.h:1441
int statical
Definition ugbc.h:1449
Variable * toResident
Definition ugbc.h:1438
char * label
Definition ugbc.h:1423
Variable * index
Definition ugbc.h:1426
Variable * from
Definition ugbc.h:1429
Variable * fromResident
Definition ugbc.h:1432
char * parameters[MAX_TEMPORARY_STORAGE]
Definition ugbc.h:2108
char * name
Definition ugbc.h:2107
struct _Macro * next
Definition ugbc.h:2112
int parameterCount
Definition ugbc.h:2109
char * lines[MAX_TEMPORARY_STORAGE]
Definition ugbc.h:2110
int lineCount
Definition ugbc.h:2111
int start
Definition ugbc.h:737
int size
Definition ugbc.h:752
struct _MemoryArea * next
Definition ugbc.h:760
int id
Definition ugbc.h:732
MemoryAreaType type
Definition ugbc.h:757
int current
Definition ugbc.h:742
int end
Definition ugbc.h:747
int maxBytes
Definition ugbc.h:2261
int maxDigits
Definition ugbc.h:2262
int size
Definition ugbc.h:892
struct _Offsetting * next
Definition ugbc.h:905
int count
Definition ugbc.h:897
OffsettingVariable * variables
Definition ugbc.h:902
struct _Variable * variable
Definition ugbc.h:880
struct _OffsettingVariable * next
Definition ugbc.h:883
Structure of a single (option) setting.
Definition ugbc.h:384
struct _OptionParameterValue * next
Definition ugbc.h:393
HardwareParameterName parameter
Definition ugbc.h:386
char * str
Definition ugbc.h:293
int cap
Definition ugbc.h:295
int len
Definition ugbc.h:294
int nb_read
Definition ugbc.h:302
char * name
Definition ugbc.h:301
int nb_write
Definition ugbc.h:303
struct _POVariable * next
Definition ugbc.h:304
struct _Pattern * next
Definition ugbc.h:1461
char * pattern
Definition ugbc.h:1458
char * parametersEach[MAX_PARAMETERS]
Definition ugbc.h:1269
int system
Definition ugbc.h:1299
struct _Procedure * next
Definition ugbc.h:1327
int protothread
Definition ugbc.h:1289
int address
Definition ugbc.h:1304
char * name
Definition ugbc.h:1256
int returnsAsmioEach[MAX_PARAMETERS]
Definition ugbc.h:1319
VariableType parametersTypeEach[MAX_PARAMETERS]
Definition ugbc.h:1284
int parameters
Definition ugbc.h:1264
int returns
Definition ugbc.h:1309
int parametersValueEach[MAX_PARAMETERS]
Definition ugbc.h:1279
VariableType returnsTypeEach[MAX_PARAMETERS]
Definition ugbc.h:1324
int declared
Definition ugbc.h:1294
int parametersAsmioEach[MAX_PARAMETERS]
Definition ugbc.h:1274
char * returnsEach[MAX_PARAMETERS]
Definition ugbc.h:1314
char * realName
Definition ugbc.h:1259
char * name
Definition ugbc.h:2216
int startingAddress
Definition ugbc.h:2217
Structure to store color components (red, green and blue).
Definition ugbc.h:432
unsigned char red
Definition ugbc.h:433
unsigned char green
Definition ugbc.h:434
unsigned char blue
Definition ugbc.h:435
unsigned char alpha
Definition ugbc.h:436
unsigned char hardwareIndex
Definition ugbc.h:439
unsigned char index
Definition ugbc.h:437
unsigned char used
Definition ugbc.h:440
char description[64]
Definition ugbc.h:438
int count
Definition ugbc.h:441
int compression
Definition ugbc.h:558
int bankNumber
Definition ugbc.h:556
int isAddress
Definition ugbc.h:557
VariableType type
Definition ugbc.h:559
char * realName
Definition ugbc.h:555
int tileWidth
Definition ugbc.h:1504
int width
Definition ugbc.h:1498
int bitmap
Definition ugbc.h:1496
struct _ScreenMode * next
Definition ugbc.h:1512
char * description
Definition ugbc.h:1494
int tileHeight
Definition ugbc.h:1506
int height
Definition ugbc.h:1500
int selected
Definition ugbc.h:1510
int score
Definition ugbc.h:1508
int colors
Definition ugbc.h:1502
Structure of a single (static) string.
Definition ugbc.h:331
char * value
Definition ugbc.h:337
struct _StaticString * next
Definition ugbc.h:342
Structure of a single storage.
Definition ugbc.h:220
FileStorage * files
Definition ugbc.h:232
char * fileName
Definition ugbc.h:229
struct _Storage * next
Definition ugbc.h:235
char * name
Definition ugbc.h:226
int id
Definition ugbc.h:223
Definition ugbc.h:963
int id
Definition ugbc.h:965
struct _Strip * next
Definition ugbc.h:969
int count
Definition ugbc.h:967
int frames[MAX_FRAMES_PER_STRIP]
Definition ugbc.h:966
char data[8]
Definition ugbc.h:2141
int horizontalEdges[8]
Definition ugbc.h:2134
int verticalEdges[8]
Definition ugbc.h:2135
TileData data[512]
Definition ugbc.h:2153
TileDescriptor * descriptor[512]
Definition ugbc.h:2152
Definition ugbc.h:1241
int size
Definition ugbc.h:1245
char * name
Definition ugbc.h:1243
struct _Field * first
Definition ugbc.h:1247
struct _Type * next
Definition ugbc.h:1249
Structure of a single variable.
Definition ugbc.h:976
int bankAssigned
Definition ugbc.h:1172
TmxMap * originalTilemap
Definition ugbc.h:1189
unsigned char * reflected
Definition ugbc.h:1072
int threaded
Definition ugbc.h:1131
unsigned char * valueBuffer
Definition ugbc.h:1061
double valueFloating
Definition ugbc.h:1046
Offsetting * offsettingFrames
Definition ugbc.h:1206
struct _Variable * tileset
Definition ugbc.h:1186
int firstGid
Definition ugbc.h:1166
int printable
Definition ugbc.h:1097
char * originalBitmap
Definition ugbc.h:1142
Strip * strips
Definition ugbc.h:1215
FloatTypePrecision precision
Definition ugbc.h:991
SIDFILE * sidFile
Definition ugbc.h:1213
StaticString * valueString
Definition ugbc.h:1041
int bankReadOrWrite
Definition ugbc.h:1181
char * meaningName
Definition ugbc.h:985
int residentAssigned
Definition ugbc.h:1175
int assigned
Definition ugbc.h:1020
int bitPosition
Definition ugbc.h:1051
struct _Variable * origin
Definition ugbc.h:1067
Offsetting * offsettingSequences
Definition ugbc.h:1211
struct _Variable * next
Definition ugbc.h:1225
int locked
Definition ugbc.h:1009
int initialValue
Definition ugbc.h:1030
int size
Definition ugbc.h:1077
int originalHeight
Definition ugbc.h:1148
Compression compression
Definition ugbc.h:1087
int arrayDimensions
Definition ugbc.h:1112
int originalDepth
Definition ugbc.h:1151
int used
Definition ugbc.h:1002
char * name
Definition ugbc.h:979
int absoluteAddress
Definition ugbc.h:1092
TsxTileset * originalTileset
Definition ugbc.h:1184
int bitByte
Definition ugbc.h:1056
int usedImage
Definition ugbc.h:1220
int mapLayers
Definition ugbc.h:1160
FloatTypePrecision arrayPrecision
Definition ugbc.h:1128
int onStorage
Definition ugbc.h:1201
int arrayDimensionsEach[MAX_ARRAY_DIMENSIONS]
Definition ugbc.h:1117
int originalColors
Definition ugbc.h:1154
VariableType type
Definition ugbc.h:988
int frameSize
Definition ugbc.h:1134
int staticalInit
Definition ugbc.h:1139
int readonly
Definition ugbc.h:1195
MemoryArea * memoryArea
Definition ugbc.h:1107
int mapHeight
Definition ugbc.h:1158
int frameCount
Definition ugbc.h:1137
int originalWidth
Definition ugbc.h:1145
int uncompressedSize
Definition ugbc.h:1082
int value
Definition ugbc.h:1025
Bank * bank
Definition ugbc.h:1102
int frameWidth
Definition ugbc.h:1162
int variableUniqueId
Definition ugbc.h:1178
int initializedByConstant
Definition ugbc.h:1036
int frameHeight
Definition ugbc.h:1164
RGBi originalPalette[MAX_PALETTE]
Definition ugbc.h:1169
int imported
Definition ugbc.h:1014
VariableType arrayType
Definition ugbc.h:1125
int mapWidth
Definition ugbc.h:1156
struct _Type * typeType
Definition ugbc.h:1222
Constant * arrayInitialization
Definition ugbc.h:1122
int temporary
Definition ugbc.h:996
char * realName
Definition ugbc.h:982
char rchack_falling_balls_1163
Definition ugbc.h:2052
char rchack_4gravity_1163
Definition ugbc.h:2046
char rchack_pick_the_star_1163
Definition ugbc.h:2041
char rchack_ostra_1172
Definition ugbc.h:2020
char rchack_4gravity_1164
Definition ugbc.h:2047
char rchack_cocon_1163
Definition ugbc.h:2034
char screenModeUnique
Definition ugbc.h:2004
char doubleBufferSelected
Definition ugbc.h:2005
char clsImplicit
Definition ugbc.h:2008
char palettePreserve
Definition ugbc.h:2007
char doubleBuffer
Definition ugbc.h:2006
char rchack_ccarrots_1163
Definition ugbc.h:2057
char rchack_acme_1172
Definition ugbc.h:2015
char rchack_btd_1171
Definition ugbc.h:2025
struct _TmxMap TmxMap
struct _TsxTileset TsxTileset
#define yyerror
Variable * console_tiles_get_height(Environment *_environment)
void begin_gameloop(Environment *_environment)
Emit ASM code for BEGIN GAMELOOP.
Variable * color_get_vars(Environment *_environment, char *_index)
Emit ASM code for instruction = COLOR( [int] ).
Definition color_get.c:53
Variable * variable_bin(Environment *_environment, char *_value, char *_digits, char *_zero, char *_one)
Emit code for <string>BIN(...).
struct _ScreenMode ScreenMode
int calculate_nearest_tile(TileDescriptor *_tile, TileDescriptors *_tiles)
void end_gameloop(Environment *_environment)
Emit ASM code for END GAMELOOP.
void screen_rows_var(Environment *_environment, char *_rows)
Emit ASM code for SCREEN ROWS [int]x.
Definition screen_rows.c:71
void animate_semivars(Environment *_environment, char *_prefix, char *_anim, char *_x, char *_y)
Emit code for ANIMATE ....
Definition animate.c:71
Variable * in_var(Environment *_environment, char *_port)
Emit ASM code for IN.
Definition in.c:101
void target_finalization(Environment *_environment)
Definition _cleanup.c:45
void dojo_serial_init(Environment *_environment)
Definition dojo.c:43
Variable * dojo_get_message(Environment *_environment, char *_port, char *_channel)
Variable * fujinet_get_error(Environment *_environment)
ImageDescriptor * image_descriptor_roll_x_right(Environment *_environment, ImageDescriptor *_source)
void label_define_numeric(Environment *_environment, int _label)
void ellipse(Environment *_environment, char *_x, char *_y, char *_rx, char *_ry, char *_c, int _preserve_color)
Emit code for ELLIPSE command.
Definition ellipse.c:81
void text_tab(Environment *_environment)
Definition text.c:86
Variable * variable_array_min_vars(Environment *_environment, char *_name)
void fujinet_get_status(Environment *_environment)
Variable * variable_hex2bin(Environment *_environment, char *_value, char *_variable)
Emit code for = HEX2BIN( ... ).
int procedure_exists(Environment *_environment, char *_name)
int assemblyLineIsAComment(char *_buffer)
Variable * jfire(Environment *_environment, int _port)
Definition jfire.c:41
struct _Resource Resource
void show_usage_and_exit(int _argc, char *_argv[])
Show usage and exit.
Definition ugbc.tab.c:53855
void sprite_expand_vertical_var(Environment *_environment, char *_sprite)
Emit ASM code for SPRITE [expression] EXPAND VERTICAL.
void shoot(Environment *_environment, int _channels)
Emit ASM code for SHOOT ....
Definition shoot.c:67
void stop_animation(Environment *_environment, char *_prefix)
Emit code for STOP ....
Variable * fujinet_read(Environment *_environment, char *_size)
Variable * travel_path(Environment *_environment, char *_p, char *_x, char *_y, char *_times, char *_limited)
Emit ASM code to implement TRAVEL PATH command.
Variable * joyx_vars(Environment *_environment, char *_port)
Definition joy_analog.c:41
_CopperOperation
Definition ugbc.h:2221
@ COP_NOP
Definition ugbc.h:2223
@ COP_WAIT
Definition ugbc.h:2225
@ COP_STORE_DWORD
Definition ugbc.h:2229
@ COP_COLOR_BORDER
Definition ugbc.h:2235
@ COP_MOVE_BYTE
Definition ugbc.h:2231
@ COP_MOVE_WORD
Definition ugbc.h:2232
@ COP_STORE_WORD
Definition ugbc.h:2228
@ COP_COLOR
Definition ugbc.h:2237
@ COP_STORE_BYTE
Definition ugbc.h:2227
@ COP_MOVE_DWORD
Definition ugbc.h:2233
@ COP_COLOR_BACKGROUND
Definition ugbc.h:2236
void screen_type_color_set(Environment *_environment, int _type, int _color_set)
struct _VestigialConfig VestigialConfig
struct _FloatType FloatType
Variable * variable_retrieve(Environment *_environment, char *_name)
void put_tilemap_vars(Environment *_environment, char *_tilemap, int _flags, char *_dx, char *_dy, char *_layer, char *_padding_tile)
Emit ASM code for PUT TILEMAP [tilemap].
Definition put_tilemap.c:71
size_t buffered_fwrite(Environment *_environment, void *_data, size_t _size, size_t _count, FILE *_stream)
_HardwareParameterName
Definition ugbc.h:353
@ HPN_SLOT
Definition ugbc.h:355
@ HPN_ADDRESS
Definition ugbc.h:356
DataSegment * data_segment_find_numeric(Environment *_environment, int _number)
#define BANK_TYPE_COUNT
Maximum number of bank types.
Definition ugbc.h:145
void blit_define(Environment *_environment, char *_name, int _sop, int _mop, int _smop, int _iop, int _dop, int _idop, int _top)
Emit ASM code for BLIT IMAGE [image] AT [int],[int].
void end_repeat_condition(Environment *_environment, char *_expression)
Definition end_repeat.c:67
void lbottom(Environment *_environment)
Emit code for HOME.
Definition lbottom.c:68
void sprite_disable(Environment *_environment, int _sprite)
Emit ASM code for SPRITE [int] DISABLE.
void variable_set_type(Environment *_environment, char *_source, char *_type)
Variable * dojo_create_port(Environment *_environment)
void end_select_case(Environment *_environment)
Emit ASM code for ENDSELECT.
int palette_extract(Environment *_environment, char *_data, int _width, int _height, int _depth, int _flags, RGBi *_palette)
void wait_ticks_var(Environment *_environment, char *_timing)
Emit ASM code for WAIT [expression] TICKS.
Definition wait_ticks.c:65
void char_at(Environment *_environment, char *_x, char *_y, char *_code, char *_type, char *_size)
Emit code for CENTRE ....
Definition char_at.c:51
void slow(Environment *_environment)
Emit ASM code for SLOW.
Definition slow.c:49
void memory_area_unassign(MemoryArea *_first, Variable *_variable)
void blit_define_compound_binary(Environment *_environment, int _operation, int _operand1, int _operand2, int _result)
void parser_array_index_symbolic(Environment *_environment, char *_index)
char * image_extract_subimage(Environment *_environment, char *_source, int _width, int _height, int _frame_width, int _frame_height, int _x, int _y, int _depth)
_OutputFileType
Definition ugbc.h:256
@ OUTPUT_FILE_TYPE_ROM
Definition ugbc.h:265
@ OUTPUT_FILE_TYPE_REU
Definition ugbc.h:269
@ OUTPUT_FILE_TYPE_K7_NEW
Definition ugbc.h:262
@ OUTPUT_FILE_TYPE_GB
Definition ugbc.h:271
@ OUTPUT_FILE_TYPE_DSK
Definition ugbc.h:267
@ OUTPUT_FILE_TYPE_CAS
Definition ugbc.h:264
@ OUTPUT_FILE_TYPE_PRG
Definition ugbc.h:259
@ OUTPUT_FILE_TYPE_TAP
Definition ugbc.h:263
@ OUTPUT_FILE_TYPE_VZ
Definition ugbc.h:273
@ OUTPUT_FILE_TYPE_K7_ORIGINAL
Definition ugbc.h:261
@ OUTPUT_FILE_TYPE_BIN
Definition ugbc.h:258
@ OUTPUT_FILE_TYPE_ATR
Definition ugbc.h:268
@ OUTPUT_FILE_TYPE_COM
Definition ugbc.h:272
@ OUTPUT_FILE_TYPE_RAM
Definition ugbc.h:270
@ OUTPUT_FILE_TYPE_SDDRIVE
Definition ugbc.h:274
@ OUTPUT_FILE_TYPE_D64
Definition ugbc.h:266
@ OUTPUT_FILE_TYPE_XEX
Definition ugbc.h:260
ScreenMode * find_screen_mode_by_id(Environment *_environment, int _id)
void global(Environment *_environment)
Manage variable as "global".
Definition global.c:96
int tile_allocate(TileDescriptors *_tiles, char *_data)
void text_text(Environment *_environment, char *_text, int _raw)
Definition text.c:41
void dojo_fujinet_put_requestd(Environment *_environment, int _command, char *_param1, char *_param2, char *_data, char *_size, char *_result)
void print_question_mark(Environment *_environment)
Emit code for print a single question mark.
Definition print.c:413
Variable * csprite_init(Environment *_environment, char *_image, char *_sprite, int _flags)
Emit code for SPRITE(...).
Variable * origin_resolution_relative_transform_x(Environment *_environment, char *_x, int _is_relative)
Variable * joyx(Environment *_environment, int _port)
Definition joy_analog.c:52
void begin_for_from_mt(Environment *_environment, char *_index, char *_from, char *_to, char *_step)
struct _Program Program
int system_move_safe(Environment *_environment, char *_source, char *_destination)
Variable * variable_div(Environment *_environment, char *_source, char *_dest, char *_remainder)
Make a division between two variable and return the product of them.
void bank_set(Environment *_environment, int _bank)
Emit ASM code for instruction BANK ....
Definition bank_set.c:72
Variable * get_cmove_direct(Environment *_environment, int _x, int _y)
Definition get_cmove.c:100
RGBi * palette_match_hardware_index(RGBi *_source, int _source_size, RGBi *_system, int _system_size)
enum _CopperOperation CopperOperation
void begin_for_from_assign_mt(Environment *_environment, char *_from)
void variable_increment_array_type(Environment *_environment, char *_source, char *_field)
Variable * msprite_duplicate(Environment *_environment, char *_original)
Emit code for SPRITE(...).
Variable * tiles_load(Environment *_environment, char *_filename, int _flags, char *_tileset, int _index)
Emit code for LOAD TILE(...).
Definition tiles_load.c:176
DataSegment * data_segment_define_or_retrieve_numeric(Environment *_environment, int _number)
void dojo_serial_get_response_size(Environment *_environment, char *_status, char *_size)
Definition dojo.c:92
void every_ticks_gosub(Environment *_environment, char *_timing, char *_label, char *_timer)
Emit ASM code for EVERY ... TICKS GOSUB ....
Definition every_gosub.c:54
Variable * sequence_storage(Environment *_environment, char *_filename, char *_alias, int _mode, int _frame_width, int _frame_height, int _flags, int _transparent_color, int _background_color, int _bank_expansion, int _origin_x, int _origin_y, int _offset_x, int _offset_y)
Emit code for IMAGE ... AS ....
void sprite_multicolor(Environment *_environment, int _sprite)
Emit ASM code for SPRITE [int] MULTICOLOR.
void end_loop_while(Environment *_environment, char *_expr)
Emit ASM code for ... LOOP.
int calculate_tile_affinity(TileDescriptor *_first, TileDescriptor *_second)
void bank_read_semi_var(Environment *_environment, int _bank, int _address1, char *_address2, int _size)
Emit ASM code for instruction BANK READ ....
Definition bank_read.c:50
struct _ImageDescriptor ImageDescriptor
int find_frame_by_type(Environment *_environment, TsxTileset *_tileset, char *_images, char *_description)
Variable * dojo_peek_message(Environment *_environment, char *_port, char *_channel)
void const_define_numeric(Environment *_environment, char *_name, int _value)
void variable_string_right_assign(Environment *_environment, char *_string, char *_position, char *_expression)
Emit code for RIGHT( ..., ... ) = ....
void fcircle(Environment *_environment, char *_x, char *_y, char *_r, char *_c, int _preserve_color)
Emit code for CIRCLE command.
Definition fcircle.c:121
void configure_set_value(Environment *_environment, int _name, int _parameter, int _value)
int reset_screen_mode_selected(Environment *_environment)
Variable * joyy_vars(Environment *_environment, char *_port)
Definition joy_analog.c:62
void bank_write_vars(Environment *_environment, char *_bank, char *_address1, char *_address2, char *_size)
Emit ASM code for instruction BANK WRITE ....
Definition bank_write.c:49
void screen_columns_var(Environment *_environment, char *_columns)
Emit ASM code for SCREEN COLUMNS [int]x.
Variable * variable_compare_const(Environment *_environment, char *_source, int _dest)
Compare two variable and return the result of comparation.
void screen_horizontal_scroll_var(Environment *_environment, char *_displacement)
Emit ASM code for SCREEN HORIZONTAL SCROLL [expression[.
_Writing
Definition ugbc.h:1465
@ WRITING_PAPER
Definition ugbc.h:1473
@ WRITING_IGNORE
Definition ugbc.h:1471
@ WRITING_OR
Definition ugbc.h:1468
@ WRITING_REPLACE
Definition ugbc.h:1467
@ WRITING_NORMAL
Definition ugbc.h:1475
@ WRITING_XOR
Definition ugbc.h:1469
@ WRITING_AND
Definition ugbc.h:1470
@ WRITING_PEN
Definition ugbc.h:1474
Variable * get_paper(Environment *_environment, char *_color)
Emit code for the PAPER$(...).
Variable * sequence_load(Environment *_environment, char *_filename, char *_alias, int _mode, int _frame_width, int _frame_height, int _flags, int _transparent_color, int _background_color, int _bank_expansion, int _origin_x, int _origin_y, int _offset_x, int _offset_y)
Emit code for LOAD IMAGE(...).
void box(Environment *_environment, char *_x1, char *_y1, char *_x2, char *_y2, char *_c, int _preserve_color)
Emit ASM code to implement BOX command.
Definition box.c:84
Variable * respawn_procedure(Environment *_environment, char *_name)
Emit code for SPAWN ....
Definition respawn.c:85
Variable * variable_string_right(Environment *_environment, char *_string, char *_position)
Emit code for = LEFT( ..., ... ).
_AudioDeviceName
Definition ugbc.h:360
@ ADN_SN76489
Definition ugbc.h:362
@ ADN_TED
Definition ugbc.h:367
@ ADN_DAC1
Definition ugbc.h:365
@ ADN_POKEY
Definition ugbc.h:363
@ ADN_VIC1
Definition ugbc.h:368
@ ADN_AY8910
Definition ugbc.h:366
@ ADN_SID
Definition ugbc.h:364
void begin_for_from(Environment *_environment, char *_index, char *_from, char *_to, char *_step)
void bell_vars(Environment *_environment, char *_note, char *_duration, char *_channels, int _sync)
Emit ASM code for BELL ....
Definition bell.c:86
Variable * variable_string_mid(Environment *_environment, char *_string, char *_position, char *_len)
Emit code for = MID( ..., ... [, ...] ).
void put_tile(Environment *_environment, char *_tile, char *_x, char *_y, char *_w, char *_h)
Emit ASM code for PUT TILE [image] AT [int],[int].
Definition put_tile.c:56
Variable * inkey(Environment *_environment)
Definition inkey.c:43
AtlasDescriptor * atlas_descriptor_create(Environment *_environment, char *_filename, int _flags, int _image_origin_x, int _image_origin_y, int _frame_width, int _frame_height, int _frame_offset_x, int _frame_offset_y)
int count_screen_mode_selected(Environment *_environment)
int banks_store(Environment *_environment, Variable *_variable, int _resident)
Definition _banks.c:170
VariableType variable_type_from_numeric_value(Environment *_environment, int _number)
void wait_milliseconds(Environment *_environment, int _timing)
Emit ASM code for WAIT # [integer] MS.
void buffered_prepend_output(Environment *_environment)
void bank_uncompress_vars(Environment *_environment, char *_bank, char *_address1, char *_address2)
Emit ASM code for instruction BANK UNCOMPRESS ....
void fade_milliseconds_var(Environment *_environment, char *_millliseconds)
Definition fade.c:51
int embed_scan_string(const char *)
void dojo_fujinet_end(Environment *_environment)
void sprite_color(Environment *_environment, int _sprite, int _color)
Emit ASM code for instruction SPRITE [int] COLOR [int].
void end_copper(Environment *_environment)
Emit code for BEGIN COPPER.
Definition end_copper.c:46
void wait_cycles_var(Environment *_environment, char *_timing, int _parallel)
Emit ASM code for WAIT [expression] CYCLES.
enum _Dialect Dialect
Type of dialects.
struct _RGBi RGBi
Structure to store color components (red, green and blue).
Variable * tilemap_load(Environment *_environment, char *_filename, char *_alias, int _mode, int _flags, int _transparent_color, int _background_color, int _bank_expansion)
Emit code for LOAD TILEMAP(...).
void parser_array_cleanup(Environment *_environment)
void fujinet_set_device_var(Environment *_environment, char *_device_id)
Variable * variable_retrieve_or_define(Environment *_environment, char *_name, VariableType _type, int _value)
struct _Field Field
void sprite_disable_var(Environment *_environment, char *_sprite)
Emit ASM code for SPRITE [expression] DISABLE.
Variable * create_vector(Environment *_environment, char *_x, char *_y)
Emit ASM code to implement CREATE PATH command.
#define MAX_FRAMES_PER_STRIP
Definition ugbc.h:575
Variable * screen_tiles_get_height(Environment *_environment)
Variable * key_pressed_var(Environment *_environment, char *_scancode)
Definition key_pressed.c:55
void dojo_serial_put_request(Environment *_environment, int _command, char *_param1, char *_param2, char *_address, char *_size, char *_result)
Definition dojo.c:56
int banks_any_used(Environment *_environment)
Definition _banks.c:93
void dojo_get_response_payloadd(Environment *_environment, char *_data)
Definition dojo.c:163
Variable * uncompress(Environment *_environment, char *_value)
void begin_for_from_prepare_mt(Environment *_environment)
char * image_cut(Environment *_environment, char *_source, int _x, int _y, int _width, int _height)
void label_referred_define_named(Environment *_environment, char *_label)
#define MAX_TEMPORARY_STORAGE
Definition ugbc.h:563
Variable * fujinet_write_type(Environment *_environment, char *_value, VariableType _type)
void dojo_fujinet_get_response0(Environment *_environment, char *_status)
RGBi * palette_shift(RGBi *_source, int _source_size, int _offset)
Shift colors in palette.
void banks_init(Environment *_environment)
Definition _banks.c:68
void text_newline(Environment *_environment)
Definition text.c:51
Variable * serialize(Environment *_environment, char *_data, char *_key)
Emit code for SERIALIZE.
Definition serialize.c:74
void allow(Environment *_environment)
Emit code for YIELD.
Definition allow.c:117
struct _Offsetting Offsetting
void loop(Environment *_environment, char *_label)
DataSegment * data_segment_define_numeric(Environment *_environment, int _number)
Variable * tileset_tile_get_height(Environment *_environment, char *_tileset)
Return the height of a TILE on a TILESET.
void dojo_serial_end(Environment *_environment)
Definition dojo.c:110
Variable * bank_get_size_var(Environment *_environment, char *_bank)
Emit ASM code for instruction = BANK SIZE( ).
void variable_move_array(Environment *_environment, char *_array, char *_value)
StaticString * static_string_create(Environment *_environment, char *_value, int _size)
void double_buffer(Environment *_environment, int _enabled)
Emit code for DOUBLE BUFFER ....
void begin_for_step_assign_mt(Environment *_environment, char *_step)
void variable_decrement(Environment *_environment, char *_source)
Decrement a variable by one.
void begin_for_identifier(Environment *_environment, char *_index)
Definition begin_for.c:289
void spc(Environment *_environment, char *_spaces)
Definition spc.c:68
void circle(Environment *_environment, char *_x, char *_y, char *_r, char *_c, int _preserve_color)
Emit code for CIRCLE command.
Definition circle.c:105
struct _ArrayReference ArrayReference
Variable * dojo_ping(Environment *_environment, char *_param1, char *_param2)
Definition dojo_ping.c:88
Variable * scancode(Environment *_environment)
Definition scancode.c:43
void on_proc_index(Environment *_environment, char *_label)
Emit ASM code for ... (of ON ... PROC ...).
Definition on_proc.c:116
void copper_color(Environment *_environment, int _index, int _color)
Emit code for BEGIN COPPER.
DataSegment * data_segment_define_or_retrieve(Environment *_environment, char *_name)
void on_gosub(Environment *_environment, char *_expression)
Emit ASM code for ON ... GOSUB ....
Definition on_gosub.c:79
void dojo_fujinet_get_response_payload(Environment *_environment, char *_data)
void variable_add_inplace_mt(Environment *_environment, char *_source, char *_destination)
Add two variable and return the sum of them on the first.
Variable * fp_exp(Environment *_environment, char *_value)
Definition fp_exp.c:88
void color_sprite(Environment *_environment, int _index, int _color)
Emit ASM code for instruction COLOR SPRITE [int] TO [int].
void wait_ticks(Environment *_environment, int _timing)
Emit ASM code for WAIT # [integer] TICKS.
Definition wait_ticks.c:49
Variable * tileset_tile_get_width(Environment *_environment, char *_tileset)
Return the width of a TILE on a TILESET.
Variable * deserialize(Environment *_environment, char *_data, char *_key, char *_var)
Emit code for DESERIALIZE.
Definition deserialize.c:62
Variable * variable_move_from_type(Environment *_environment, char *_type, char *_field)
void get_image(Environment *_environment, char *_image, char *_x1, char *_y1, char *_x2, char *_y2, char *_frame, char *_sequence, int _palette)
Emit ASM code for GET IMAGE [image] AT [int],[int].
Definition get_image.c:57
void wait_key_or_fire(Environment *_environment, int _port, int _release)
void variable_string_mid_assign(Environment *_environment, char *_string, char *_position, char *_len, char *_expression)
Emit code for MID( ..., ... [, ...] ) = ....
CopperList * find_copper_list(Environment *_environment, char *_name)
void move(Environment *_environment, char *_prefix, char *_movement, char *_x, char *_y, char *_animation)
Emit code for MOVE ....
Definition move.c:81
char * image_roll_y_down(Environment *_environment, char *_source, int _width, int _height)
void yield(Environment *_environment)
Emit code for YIELD.
Definition yield.c:63
void exit_proc_if(Environment *_environment, char *_expression, char *_value)
Emit ASM code for EXIT PROC IF.
struct _DString DString
Variable * y_graphic_get(Environment *_environment, char *_y)
Return the graphic ordinate for the given text ordinate.
POBuffer po_buf_match(POBuffer _buf, const char *_pattern,...)
Definition _optimizer.c:271
void variable_decrement_array(Environment *_environment, char *_source)
void dojo_serial_put_requestd(Environment *_environment, int _command, char *_param1, char *_param2, char *_data, char *_size, char *_result)
Definition dojo.c:62
struct _TileDescriptors TileDescriptors
void target_initialization(Environment *_environment)
Definition _init.c:43
void bank_uncompress_semi_var(Environment *_environment, int _bank, int _address1, char *_address2)
Emit ASM code for instruction BANK UNCOMPRESS ....
void cline(Environment *_environment, char *_characters)
Emit code for CLINE ....
Definition cline.c:52
Variable * variable_sr_const(Environment *_environment, char *_source, int _bits)
int variable_exists(Environment *_environment, char *_name)
void target_prepare_finalization(Environment *_environment)
Definition _cleanup.c:41
Variable * variable_not(Environment *_environment, char *_value)
Calculate logical "not" and return it as the result.
Variable * get_at(Environment *_environment, char *_x, char *_y)
Emit code for = AT$(...,...).
Definition text_get_at.c:48
void add_complex_mt(Environment *_environment, char *_variable, char *_expression, char *_limit_lower, char *_limit_upper, int _clamp)
Emit code for ADD x,y,a TO b.
Definition add.c:248
Variable * range(Environment *_environment, char *_expression, char *_min, char *_max)
Emit code for READ instruction.
Definition range.c:70
int define_audio_target_check(Environment *_environment, int _value)
Definition _define.c:41
Variable * absolute(Environment *_environment, char *_value)
Return the absolute value of a variable.
Definition abs.c:97
int is_do_loop(Environment *_environment)
Emit ASM code for ... LOOP.
Definition is_do_loop.c:49
struct _Blit Blit
Variable * peekd_var(Environment *_environment, char *_location)
Definition peek.c:274
void dojo_init(Environment *_environment)
Definition dojo.c:43
DataSegment * data_segment_define(Environment *_environment, char *_name)
void set_timer(Environment *_environment, char *_value)
Emit code for TI =.
Definition timer.c:67
Variable * fujinet_open(Environment *_environment, char *_url, char *_mode, char *_trans)
void option_dialect(Environment *_environment, Dialect _dialect)
void insert(Environment *_environment, char *_string, char *_x, char *_y, char *_w, char *_h, char *_color)
Definition insert.c:71
void sys(Environment *_environment, int _address)
Emit code for SYS / EXEC ... command.
Definition sys.c:150
void sprite_enable_var(Environment *_environment, char *_sprite)
Emit ASM code for SPRITE [expression] ENABLE.
void on_scroll_gosub(Environment *_environment, int _x, int _y, char *_label)
Emit ASM code for ON ... GOSUB ....
Variable * joy(Environment *_environment, int _port)
Definition joy.c:68
void color_tsb(Environment *_environment, char *_border, char *_background, char *_cursor)
Definition color_tsb.c:41
Variable * variable_string_inst(Environment *_environment, char *_string, char *_altstring, char *_pos)
Variable * tile_probability(Environment *_environment, char *_tileset, int _id)
Emit code for TILE CLASS(...).
void environment_setup_retrohack(Environment *_environment)
void begin_for_from_prepare(Environment *_environment)
Definition begin_for.c:172
void bottom(Environment *_environment)
Emit code for HOME.
Definition bottom.c:68
Variable * joydir(Environment *_environment, int _port)
Definition joydir.c:86
void case_equals_var(Environment *_environment, char *_value)
Emit ASM code for CASE ....
void halt(Environment *_environment)
Emit ASM code for HALT.
Definition halt.c:74
void wait_while(Environment *_environment)
Emit code for WAIT WHILE ....
Definition wait_while.c:71
void label_stored_define_named(Environment *_environment, char *_label)
void next_raster_at_with(Environment *_environment, int _at, char *_with)
Emit ASM code for NEXT RASTER AT [int] WITH [label].
Variable * images_storage(Environment *_environment, char *_source_name, char *_target_name, int _mode, int _frame_width, int _frame_height, int _flags, int _transparent_color, int _background_color, int _bank_expansion, int _origin_x, int _origin_y, int _offset_x, int _offset_y)
Emit code for IMAGE ... AS ....
void wait_fire(Environment *_environment, int _port, int _release)
Definition wait_fire.c:43
Variable * key_state_var(Environment *_environment, char *_scancode)
Definition key_state.c:56
_MemoryAreaType
Enum for memory area type.
Definition ugbc.h:708
@ MAT_GATED
Definition ugbc.h:720
@ MAT_DIRECT
Definition ugbc.h:714
@ MAT_RAM
Definition ugbc.h:726
Variable * fp_cos(Environment *_environment, char *_angle)
Definition fp_cos.c:82
Variable * variable_greater_than(Environment *_environment, char *_source, char *_dest, int _equal)
Compare two variable and return the result of comparation.
int file_size(Environment *_environment, char *_target_name)
Emit code for FILE ... AS ....
Definition file_size.c:103
Variable * variable_move_from_array1_type(Environment *_environment, char *_array, char *_index, char *_field)
_FileStorageFormat
Definition ugbc.h:249
@ FSF_CSV
Definition ugbc.h:252
@ FSF_BINARY
Definition ugbc.h:251
#define MAX_NESTED_ARRAYS
Definition ugbc.h:570
Variable * vector_get_y(Environment *_environment, char *_vector)
void variable_array_fill_random(Environment *_environment, char *_name, int _base, int _min_value, int _max_value, int _count, int _boolean)
Variable * dojo_error(Environment *_environment)
Definition dojo_error.c:57
void end_if_then(Environment *_environment)
Emit ASM code for ENDIF.
Definition end_if_then.c:50
_FujiNetDefine
Definition ugbc.h:372
@ FN_BECKER
Definition ugbc.h:375
@ FN_SIO
Definition ugbc.h:377
@ FN_HDBDOS
Definition ugbc.h:374
@ FN_SERIAL
Definition ugbc.h:376
Variable * input_string(Environment *_environment, char *_size)
void console_save(Environment *_environment, int _number)
Emit code for CONSOLE.
Variable * variable_and(Environment *_environment, char *_left, char *_right)
Calculate logical "and" and return it as the result.
void dojo_has_response(Environment *_environment, char *_result)
Variable * jfire_vars(Environment *_environment, char *_port)
Definition jfire.c:60
void sprite_monocolor_var(Environment *_environment, char *_sprite)
Emit ASM code for SPRITE [expression] MONOCOLOR.
void downw(Environment *_environment, char *_line, char *_column, char *_width, char *_height)
Emit code for DOWNW ....
Definition downw.c:82
void variable_array_fill_incremental(Environment *_environment, char *_name, int _min, int _count)
void clip(Environment *_environment, char *_x1, char *_y1, char *_x2, char *_y2)
Emit code to implement CLIP command.
Definition clip.c:78
void dojo_fujinet_put_requestds(Environment *_environment, int _command, char *_param1, char *_param2, char *_data, int _size, char *_result)
#define MAX_RESIDENT_SHAREDS
Definition ugbc.h:572
struct _KeyboardConfig KeyboardConfig
void sprite_data_from(Environment *_environment, int _sprite, int _address)
Emit ASM code for SPRITE [int] DATA FROM [int].
void fill(Environment *_environment, char *_x, char *_y, char *_w, char *_h, char *_char, char *_color)
Definition fill.c:58
Variable * variable_less_than_const(Environment *_environment, char *_source, int _dest, int _equal)
Variable * calculate_frame_by_type(Environment *_environment, TsxTileset *_tileset, char *_images, char *_description)
void text_question_mark(Environment *_environment)
Definition text.c:134
int key_constant(Environment *_environment, int _key)
char * find_last_path_separator(char *_path)
void text_encoded(Environment *_environment, char *_text, char *_pen, char *_paper, int _raw)
Variable * running(Environment *_environment, char *_thread_id, char *_procedure_name)
Emit code for RUN PARALLEL.
Definition running.c:67
void end_repeat(Environment *_environment)
Emit ASM code for ... UNTIL [expression].
Definition end_repeat.c:49
void dojo_fujinet_begin(Environment *_environment)
void slice_image(Environment *_environment, char *_image, char *_frame, char *_sequence, char *_destination)
Definition slice_image.c:43
void charset_at_var(Environment *_environment, char *_value)
Emit ASM implementation for BITMAP AT [expression] instruction.
Definition charset_at.c:47
enum _MemoryAreaType MemoryAreaType
Enum for memory area type.
Variable * tilemap_get_width(Environment *_environment, char *_tilemap)
Return the width of a TILEMAP.
void dojo_serial_get_responsed(Environment *_environment, char *_status, char *_data, char *_size)
Definition dojo.c:86
Variable * screen_var(Environment *_environment, char *_x, char *_y, int _as_string)
Definition screen.c:41
#define MAX_ARRAY_DIMENSIONS
Definition ugbc.h:566
_ConditionalType
Types of conditional jumps supported.
Definition ugbc.h:1334
@ CT_ON_GOSUB
Definition ugbc.h:1342
@ CT_ON_GOTO
Definition ugbc.h:1339
@ CT_IF
Definition ugbc.h:1336
@ CT_SELECT_CASE
Definition ugbc.h:1348
@ CT_ON_PROC
Definition ugbc.h:1345
Variable * parser_casted_numeric(Environment *_environment, VariableType _type, int _number)
Variable * variable_string_space(Environment *_environment, char *_repetitions)
Emit code for = SPACE( ... ).
void variable_compare_and_branch_const(Environment *_environment, char *_source, int _destination, char *_name, int _positive)
void variable_add_inplace_type_vars(Environment *_environment, char *_source, char *_field, char *_dest)
enum _Writing Writing
Variable * fujinet_is_connected(Environment *_environment)
Variable * variable_string_val(Environment *_environment, char *_value)
Emit code for = VAL( ... ).
void fujinet_login(Environment *_environment, char *_login)
void dojo_fujinet_get_responsed(Environment *_environment, char *_status, char *_data, char *_size)
int buffered_fputs(Environment *_environment, const char *_string, FILE *_stream)
void begin_for_prepare_mt(Environment *_environment, char *_index)
void sprite_at_vars(Environment *_environment, char *_sprite, char *_x, char *_y)
Emit ASM code for SPRITE [expression] AT ([expression],[expression]).
Definition sprite_at.c:71
void volume_off(Environment *_environment, int _channels)
Emit ASM code for VOLUME OFF.
Definition volume_off.c:68
void wait_cycles(Environment *_environment, int _timing, int _parallel)
Emit ASM code for WAIT # [integer] CYCLES.
Definition wait_cycles.c:49
void console(Environment *_environment, int _x1, int _x2, int _x3, int _x4)
Emit code for CONSOLE.
Definition console.c:118
void dojo_put_request(Environment *_environment, int _command, char *_param1, char *_param2, char *_address, char *_size, char *_result)
Definition dojo.c:73
void boom_var(Environment *_environment, char *_duration, char *_channels)
Emit ASM code for BOOM ....
Definition boom.c:84
void freeze_vars(Environment *_environment, char *_prefix)
Emit code for FREEZE ....
Definition freeze.c:69
Variable * new_image(Environment *_environment, int _width, int _height, int _mode)
Emit code for NEW IMAGE(...).
Definition new_image.c:49
void sprite_expand_horizontal_var(Environment *_environment, char *_sprite)
Emit ASM code for SPRITE [expression] EXPAND HORIZONTAL.
Variable * serial_write_type(Environment *_environment, char *_data, VariableType _type, int _big_endian)
Emit code for SERIAL WRITE(...).
Variable * variable_array_sum_vars(Environment *_environment, char *_name)
Variable * dojo_put_message(Environment *_environment, char *_port, char *_channel, char *_message)
void instrument(Environment *_environment, int _instrument, int _channels)
Emit ASM code for INSTRUMENT ....
Definition instrument.c:51
Variable * variable_array_type(Environment *_environment, char *_name, VariableType _type)
Variable * asciicode(Environment *_environment)
Definition asciicode.c:43
void fade_in_color_semivars(Environment *_environment, int _index, char *_shade)
Emit ASM code for instruction COLOR [expression], [expression].
void target_finalize(Environment *_environment)
void variable_decrement_array_type(Environment *_environment, char *_source, char *_field)
void sprite_monocolor(Environment *_environment, int _sprite)
Emit ASM code for SPRITE [int] MONOCOLOR.
void pmode(Environment *_environment, int _mode, int _start_page)
Definition pmode.c:52
void vars_emit_constant_integer(Environment *_environment, char *_name, int _value)
Definition _vars.c:46
Variable * rnd0(Environment *_environment)
Return a random value.
Definition rnd01.c:71
POVariable * po_var_register(char *_name)
Definition _optimizer.c:340
enum _ConditionalType ConditionalType
Types of conditional jumps supported.
Variable * strig_vars(Environment *_environment, char *_port)
Definition strig.c:60
POBuffer po_buf_new(int size)
Definition _optimizer.c:62
Variable * joy_direction_semivars(Environment *_environment, char *_port, int _direction)
RGBi * palette_merge(RGBi *_palette1, int _palette1_size, RGBi *_palette2, int _palette2_size, int *_size)
Make a "palette merge".
void blit_define_end_compound(Environment *_environment, int _register)
void next_animation(Environment *_environment, char *_prefix)
Emit code for KILL ....
Variable * variable_string_str(Environment *_environment, char *_value)
Emit code for = STR( ... ).
void case_else(Environment *_environment)
Emit ASM code for CASE ELSE.
Definition case_else.c:78
void raster_at_var(Environment *_environment, char *_label, char *_position)
Emit ASM code for RASTER AT [expression] WITH label.
Definition raster_at.c:73
Variable * screen_page(Environment *_environment)
Emit code for SCREEN SWAP.
Definition screen_page.c:46
void screen_vertical_scroll(Environment *_environment, int _displacement)
Emit ASM code for SCREEN VERTICAL SCROLL [integer].
void raster_at(Environment *_environment, char *_label, int _position)
Emit ASM code for RASTER AT [int] WITH [label].
Definition raster_at.c:55
POBuffer po_buf_printf(POBuffer buf, const char *fmt,...)
Definition _optimizer.c:129
int po_buf_strcmp(POBuffer _s, POBuffer _t)
Definition _optimizer.c:251
void begin_for_step(Environment *_environment, char *_index, char *_from, char *_to, char *_step)
Emit ASM code for FOR ... STEP ... NEXT.
void flip_image_vars_indirection(Environment *_environment, char *_image, char *_frame, char *_sequence, char *_direction)
Definition flip_image.c:66
Variable * variable_less_than(Environment *_environment, char *_source, char *_dest, int _equal)
Compare two variable and return the result of comparation.
void begin_copper(Environment *_environment, char *_name)
Emit code for BEGIN COPPER.
void begin_for_prepare(Environment *_environment, char *_index)
Emit ASM code for FOR ....
Definition begin_for.c:143
void music_var(Environment *_environment, char *_music, int _loop, int _music_type)
Emit ASM code for MUSIC ....
Definition music.c:54
_ConstantType
Definition ugbc.h:786
@ CT_FLOAT
Definition ugbc.h:790
@ CT_STRING
Definition ugbc.h:789
@ CT_INTEGER
Definition ugbc.h:788
void data_string(Environment *_environment, char *_value)
Emit code for DATA instruction (string values).
Definition data.c:281
void begin_compilation(Environment *_environment)
Definition _init.c:41
enum _PeepHoleOptimizationKind PeepHoleOptimizationKind
Variable * fp_sin(Environment *_environment, char *_angle)
Definition fp_sin.c:82
void bank_read_vars_bank_direct_size(Environment *_environment, int _bank, char *_address1, char *_address2, int _size)
Definition bank_read.c:218
void envelope(Environment *_environment, char *_voice, char *_attack, char *_decay, char *_sustain, char *_release)
Definition envelope.c:41
struct _POVariable POVariable
Definition ugbc.h:307
void variable_xor_inplace(Environment *_environment, char *_source, int _dest)
void variable_cleanup(Environment *_Environment)
Emit source and configuration lines for variables.
Definition _var.c:559
Variable * get_pen(Environment *_environment, char *_color)
Emit code for the PEN$(...).
Variable * keyshift(Environment *_environment)
Definition keyshift.c:43
void target_peephole_optimizer(Environment *_environment)
Variable * variable_string_upper(Environment *_environment, char *_string)
Emit code for = UPPER( ... ).
void draw_string(Environment *_environment, char *_string)
float min_of_three(float _m, float _n, float _p)
int rgbi_equals_rgba(RGBi *_first, RGBi *_second)
void bitmap_at(Environment *_environment, int _address)
Emit ASM implementation for BITMAP AT [int] instruction.
Definition bitmap_at.c:85
Variable * serial_read_type(Environment *_environment, VariableType _type, int _big_endian)
Emit code for SERIAL READ datatype.
int check_if_filename_is_valid(Environment *_environment, char *_filename)
void add_complex(Environment *_environment, char *_variable, int _expression, int _limit_lower, int _limit_upper, int _clamp)
Definition add.c:308
int label_exists_named(Environment *_environment, char *_label)
void dojo_serial_has_response(Environment *_environment, char *_result)
struct _Variable Variable
Structure of a single variable.
void sound(Environment *_environment, int _freq, int _duration, int _channels)
Emit ASM code for SOUND ....
Definition sound.c:57
void image_converter_asserts_free_height(Environment *_environment, int _width, int _height, int _offset_x, int _offset_y, int *_frame_width, int *_frame_height, int _modulo_x)
Variable * variable_int(Environment *_environment, char *_expression)
void draw_tile_row(Environment *_environment, char *_tile, char *_y, char *_x1, char *_x2, char *_color)
Emit ASM code for DRAW TILE ROW [y], [x1] TO [x2], [color].
void begin_for_to_mt(Environment *_environment, char *_to)
void banks_init_extended(Environment *_environment, int *_allowed, int _allowed_count, int _allowed_size)
Definition _banks.c:43
Variable * fujinet_get_bytes_waiting(Environment *_environment)
void blit_define_compound_unary(Environment *_environment, int _operation, int _operand, int _result)
void move_tile(Environment *_environment, char *_tile, char *_x, char *_y)
Emit ASM code for MOVE TILE [image] AT [int],[int].
Definition move_tile.c:53
void begin_for(Environment *_environment, char *_index, char *_from, char *_to)
Definition begin_for.c:436
struct _Pattern Pattern
void chain(Environment *_environment, char *_filename)
Emit code for DLOAD(...).
Definition chain.c:101
void pen(Environment *_environment, char *_color)
Emit code for PEN ... command.
Definition pen.c:47
void image_converter_asserts_free_width(Environment *_environment, int _width, int _height, int _offset_x, int _offset_y, int *_frame_width, int *_frame_height, int _modulo_y)
void dojo_fujinet_get_response_size(Environment *_environment, char *_status, char *_size)
Variable * screen_get_width(Environment *_environment)
void sprite_color_vars(Environment *_environment, char *_sprite, char *_color)
Emit ASM code for instruction SPRITE [int] COLOR [int].
void memrestore(Environment *_environment, char *_param)
Definition memrestore.c:78
Variable * variable_move_from_array(Environment *_environment, char *_array)
ImageDescriptor * image_descriptor_create(Environment *_environment, char *_filename, int _flags)
void screen_on(Environment *_environment)
Emit ASM code for SCREEN ON.
Definition screen_on.c:48
void else_if_then_label(Environment *_environment)
Emit ASM code for ... ELSE [IF] ....
Variable * joy_direction(Environment *_environment, int _port, int _direction)
void fujinet_define(Environment *_environment, FujiNetDefine _mode)
Variable * tilemap_index_vars(Environment *_environment, char *_tilemap, char *_column, char *_row, char *_layer)
Variable * variable_greater_than_const(Environment *_environment, char *_source, int _dest, int _equal)
void gosub_number(Environment *_environment, int _number)
Emit ASM code for GOSUB [number].
Definition gosub.c:140
enum _GammaCorrection GammaCorrection
Gamma correction type (for some palettes).
void image_converter_asserts_free(Environment *_environment, int _width, int _height, int _offset_x, int _offset_y, int *_frame_width, int *_frame_height)
Variable * music_storage(Environment *_environment, char *_filename, char *_alias, int _bank_expansion)
Emit code for LOAD MUSIC(...).
void dstring_cleanup(Environment *_Environment)
Definition _dstring.c:41
struct _BankAccessOptimization BankAccessOptimization
void text_set_tab(Environment *_environment, char *_net_tab)
Emit code for SET TAB ....
Definition set_tab.c:67
void graphic(Environment *_environment)
Emit ASM implementation for GRAPHIC instruction.
Definition graphic.c:68
void sbpen_set(Environment *_environment, int _index, char *_color)
Definition sb.c:41
Variable * variable_and_const(Environment *_environment, char *_source, int _mask)
Calculate "and" mask for a variable and it as the result.
Variable * moving(Environment *_environment, char *_prefix, char *_movement)
Emit code for MOVING.
Definition moving.c:66
Variable * x_text_get(Environment *_environment, char *_x)
Return the graphic abscissa for the given text abscissa.
Definition x_text_get.c:81
Variable * variable_div2_const(Environment *_environment, char *_source, int _bits, char *_remainder)
Subdivide by two a variable for various times and return the result.
void put_tilemap_inline(Environment *_environment, char *_tilemap, int _flags, char *_dx, char *_dy, char *_layer, int _padding_tile)
struct _ConfigureSN76489Parameters ConfigureSN76489Parameters
void variable_string_left_assign(Environment *_environment, char *_string, char *_position, char *_expression)
Emit code for LEFT( ..., ... ) = ....
void locate(Environment *_environment, char *_x, char *_y)
Emit code for LOCATE ...,....
Definition locate.c:110
void select_case(Environment *_environment, char *_expression)
Emit ASM code for SELECT CASE ... {PASSING}.
void text_at(Environment *_environment, char *_x, char *_y, char *_text)
Definition text.c:112
POBuffer po_buf_cpy(POBuffer buf, char *string)
Definition _optimizer.c:94
Variable * rnd1(Environment *_environment)
Definition rnd01.c:110
Variable * sprite_init(Environment *_environment, char *_image, char *_sprite, int _flags)
Emit code for SPRITE(...).
Definition sprite_init.c:47
void add_complex_vars(Environment *_environment, char *_variable, char *_expression, char *_limit_lower, char *_limit_upper, int _clamp)
Emit code for ADD x,y,a TO b.
Definition add.c:136
Variable * variable_store_string(Environment *_environment, char *_source, char *_string)
Store a string to a variable.
void mempos(Environment *_environment, char *_address, char *_bank)
Definition mempos.c:72
int frames(Environment *_environment, char *_image)
Emit code for FRAMES(...).
Definition frames.c:160
void sprite_enable(Environment *_environment, int _sprite)
Emit ASM code for SPRITE [int] ENABLE.
void reset(Environment *_environment)
Definition reset.c:41
Variable * variable_string_chr(Environment *_environment, char *_ascii)
Emit code for = CHR( ... ).
void fast(Environment *_environment)
Emit ASM code for FAST.
Definition fast.c:49
enum _Compression Compression
Type of compression.
void sprite_data_from_vars(Environment *_environment, char *_sprite, char *_address)
Emit ASM code for SPRITE [expression] DATA FROM [expression].
void vcenter(Environment *_environment, char *_string, int _newline)
Emit code for CENTRE ....
Definition vcenter.c:111
char * image_flip_y(Environment *_environment, char *_source, int _width, int _height, int _depth)
void copper_color_border(Environment *_environment, int _color)
Emit code for BEGIN COPPER.
ArrayReference * parser_array_retrieve(Environment *_environment)
char * basename(char *_path)
POBuffer tmp_buf(void *key1, unsigned int key2)
Definition _optimizer.c:218
void blit_define_begin_compound(Environment *_environment, char *_name)
struct _POBuffer * POBuffer
Definition ugbc.h:298
Variable * variable_define_no_init(Environment *_environment, char *_name, VariableType _type)
Variable * variable_string_pick(Environment *_environment, char *_string, int _position)
void kill_procedure(Environment *_environment, char *_handle)
Emit code for KILL ....
Definition kill.c:77
#define MAX_PARAMETERS
Definition ugbc.h:567
void begin_while_condition(Environment *_environment, char *_expression)
Definition while.c:99
Variable * spen(Environment *_environment)
Emit ASM code for = SPEN().
Definition spen.c:54
int(* RgbConverterFunction)(int, int, int)
Definition ugbc.h:2157
void colormap_clear_with(Environment *_environment, int _foreground, int _background)
Emit ASM implementation for COLORMAP CLEAR WITH [int] ON [int] instruction.
void volume_off_var(Environment *_environment, char *_channels)
Emit ASM code for VOLUME OFF.
Definition volume_off.c:91
Variable * variable_move_naked(Environment *_environment, char *_source, char *_dest)
Store the value of a variable inside another variable without conversion.
struct _Type Type
Variable * fujinet_set_channel_mode_var(Environment *_environment, char *_mode)
void vhcenter(Environment *_environment, char *_string, int _newline, char *_width)
Emit code for CENTRE ....
Definition vhcenter.c:111
Variable * screen_tiles_get_width(Environment *_environment)
Variable * key_state(Environment *_environment, int _scancode)
Definition key_state.c:43
void begin_for_from_assign(Environment *_environment, char *_from)
Definition begin_for.c:182
void sprite_at(Environment *_environment, int _sprite, int _x, int _y)
Emit ASM code for SPRITE [int] AT ([int],[int]).
Definition sprite_at.c:53
_AnimationType
Definition ugbc.h:285
@ AT_BOUNCE
Definition ugbc.h:287
@ AT_LOOP
Definition ugbc.h:288
@ AT_SIMPLE
Definition ugbc.h:286
Variable * tilemap_get_height(Environment *_environment, char *_tilemap)
Return the height of a TILEMAP.
char * escape_newlines(char *_string)
void variable_increment(Environment *_environment, char *_source)
Increment a variable by one.
Resource * build_resource_for_sequence(Environment *_environment, char *_image, char *_frame, char *_sequence)
POBuffer po_buf_del(POBuffer buf)
Definition _optimizer.c:49
void if_then(Environment *_environment, char *_expression)
Emit ASM code for IF ... THEN ....
Definition if_then.c:123
int label_stored_exists_named(Environment *_environment, char *_label)
void add_complex_array(Environment *_environment, char *_variable, char *_expression, char *_limit_lower, char *_limit_upper, int _clamp)
Emit code for ADD x,y,a TO b.
Definition add.c:281
void music_pause(Environment *_environment)
Definition music.c:81
Variable * variable_add_const(Environment *_environment, char *_source, int _dest)
Add a variable with a constant, and return the sum of them.
void end_loop_until(Environment *_environment, char *_expr)
Emit ASM code for ... LOOP.
void memcont(Environment *_environment, char *_param)
Definition memcont.c:80
void variable_increment_array(Environment *_environment, char *_source)
struct _Environment Environment
Structure of compilation environment.
void const_emit(Environment *_environment, char *_name)
Definition _const.c:41
struct _MemoryArea MemoryArea
void bitmap_disable(Environment *_environment)
Emit ASM implementation for BITMAP DISABLE instruction.
void fujinet_set_device(Environment *_environment, int _device_id)
TileDescriptor * calculate_tile_descriptor(TileData *_tileData)
void end_storage(Environment *_environment)
Emit code for ENDSTORAGE.
Definition end_storage.c:47
Variable * banks_get_address_var(Environment *_environment, char *_bank)
Definition _banks.c:152
void tmp_buf_clr(void *key1)
Definition _optimizer.c:243
void unfreeze_vars(Environment *_environment, char *_prefix)
Emit code for FREEZE ....
Definition unfreeze.c:70
Variable * variable_string_lower(Environment *_environment, char *_string)
Emit code for = UPPER( ... ).
TileDescriptors * precalculate_tile_descriptors_for_font(char *_fontData, int _fontSize)
void every_on(Environment *_environment, char *_timer)
Emit ASM code for EVERY ON.
Definition every_on.c:51
void environment_setup_10liner(Environment *_environment)
void dojo_serial_get_response0(Environment *_environment, char *_status)
Definition dojo.c:74
void wait_key_or_fire_semivar(Environment *_environment, char *_port, int _release)
void add_complex_type_vars(Environment *_environment, char *_variable, char *_field, char *_expression, char *_limit_lower, char *_limit_upper, int _clamp)
Definition add.c:188
void gr_locate(Environment *_environment, char *_x, char *_y)
Emit code for GR LOCATE command.
Definition gr.c:89
void dojo_put_request0(Environment *_environment, int _command, char *_param1, char *_param2, char *_result)
Definition dojo.c:63
Variable * variable_mod(Environment *_environment, char *_source, char *_destination)
Variable * joydir_semivars(Environment *_environment, char *_port)
Definition joydir.c:41
char * resolve_color(Environment *_environment, char *_color)
int pattern_match(char *_pattern, char *_value)
Variable * variable_store(Environment *_environment, char *_source, unsigned int _value)
Store a direct value to a variable.
Variable * variable_complement_const(Environment *_environment, char *_source, int _mask)
Calculate the complement of a variable.
Variable * variable_compare_not_const(Environment *_environment, char *_source, int _dest)
Compare two variable and return the result of comparation.
void wait_parallel(Environment *_environment, char *_thread)
Emit code for WAIT PARALLEL ....
Variable * msprite_init(Environment *_environment, char *_image, char *_sprite, int _flags)
Emit code for SPRITE(...).
Environment * environment_create(void)
Create a new environment.
Variable * variable_string_left(Environment *_environment, char *_string, char *_position)
Emit code for = LEFT( ..., ... ).
_VariableType
Type of variables.
Definition ugbc.h:447
@ VT_THREAD
Definition ugbc.h:492
@ VT_DOJOKA
Definition ugbc.h:534
@ VT_TILE
Definition ugbc.h:504
@ VT_FLOAT
Definition ugbc.h:522
@ VT_BLIT
Definition ugbc.h:519
@ VT_TARRAY
Definition ugbc.h:480
@ VT_WORD
Definition ugbc.h:455
@ VT_POSITION
Definition ugbc.h:468
@ VT_NUMBER
Definition ugbc.h:549
@ VT_SDWORD
Definition ugbc.h:462
@ VT_MSPRITE
Definition ugbc.h:531
@ VT_STRING
Definition ugbc.h:474
@ VT_TILEMAP
Definition ugbc.h:525
@ VT_TILES
Definition ugbc.h:507
@ VT_SWORD
Definition ugbc.h:457
@ VT_BYTE
Definition ugbc.h:450
@ VT_DWORD
Definition ugbc.h:460
@ VT_BIT
Definition ugbc.h:528
@ VT_IMAGEREF
Definition ugbc.h:537
@ VT_VECTOR2
Definition ugbc.h:543
@ VT_CHAR
Definition ugbc.h:498
@ VT_BUFFER
Definition ugbc.h:477
@ VT_SPRITE
Definition ugbc.h:501
@ VT_SBYTE
Definition ugbc.h:452
@ VT_IMAGES
Definition ugbc.h:495
@ VT_MUSIC
Definition ugbc.h:516
@ VT_TYPE
Definition ugbc.h:546
@ VT_ADDRESS
Definition ugbc.h:465
@ VT_COLOR
Definition ugbc.h:471
@ VT_TILESET
Definition ugbc.h:510
@ VT_DSTRING
Definition ugbc.h:483
@ VT_PATH
Definition ugbc.h:540
@ VT_IMAGE
Definition ugbc.h:489
@ VT_SEQUENCE
Definition ugbc.h:513
Variable * variable_string_insert(Environment *_environment, char *_string, char *_altstring, char *_pos)
Variable * create_path(Environment *_environment, char *_x0, char *_y0, char *_x1, char *_y1)
Emit ASM code to implement CREATE PATH command.
Definition create_path.c:90
Variable * variable_flip(Environment *_environment, char *_variable)
RGBi * image_nearest_system_color(RGBi *_color)
void sound_off_var(Environment *_environment, char *_channels)
Emit ASM code for SOUND OFF ....
Definition sound_off.c:68
void wait_vbl(Environment *_environment, char *_raster_line)
Emit ASM code for WAIT VBL/b>.
Definition wait_vbl.c:53
Variable * tile_load(Environment *_environment, char *_filename, int _flags, char *_tileset, int _index)
Emit code for LOAD TILE(...).
Definition tile_load.c:168
void dojo_get_response0(Environment *_environment, char *_status)
Definition dojo.c:113
Variable * variable_string_asc(Environment *_environment, char *_char)
Emit code for = ASC( ... ).
Variable * read_end_unsafe(Environment *_environment)
void variable_xor_inplace_mt(Environment *_environment, char *_source, char *_destination)
Add two variable and return the sum of them on the first.
void fade_ticks_var(Environment *_environment, char *_ticks)
Emit code for FADE.
Definition fade.c:47
void put_image_vars_flags(Environment *_environment, char *_image, char *_x1, char *_y1, char *_x2, char *_y2, char *_frame, char *_sequence, int _flags)
Definition put_image.c:430
void paint_vars(Environment *_environment, char *_x, char *_y, char *_c, char *_b)
Emit ASM code for PAIN.
Definition paint.c:99
Variable * get_ticks_per_second(Environment *_environment)
Emit code for TAB$.
Variable * text_get_ycurs(Environment *_environment)
Definition text.c:128
_Compression
Type of compression.
Definition ugbc.h:107
@ CMP_MSC1
Definition ugbc.h:111
@ CMP_NONE
Definition ugbc.h:109
@ CMP_RLE
Definition ugbc.h:113
struct _AtlasDescriptor AtlasDescriptor
Variable * variable_hex(Environment *_environment, char *_value, int _separator)
Emit code for = HEX( ... ).
Variable * variable_string_string(Environment *_environment, char *_string, char *_repetitions)
Emit code for = STRING( ..., ... ).
void play_vars(Environment *_environment, char *_note, char *_duration, char *_channels)
Emit ASM code for PLAY ....
Definition play.c:78
struct _FontConfig FontConfig
void bank_set_var(Environment *_environment, char *_bank)
Emit ASM code for instruction BANK ....
Definition bank_set.c:87
void put_key(Environment *_environment, char *_string)
Definition put_key.c:43
void next_raster(Environment *_environment)
Emit ASM code for NEXT RASTER.
Definition next_raster.c:50
int rgbi_equals_rgb(RGBi *_first, RGBi *_second)
Variable * powering(Environment *_environment, char *_source, char *_dest)
Emit code to raise a variable to a given variable.
Definition pow.c:91
void proc(Environment *_environment, char *_label)
Emit ASM code for PROC.
Definition proc.c:86
Variable * variable_import(Environment *_environment, char *_name, VariableType _type, int _size_or_value)
void forbid(Environment *_environment)
Emit code for YIELD.
Definition forbid.c:89
char * unescape_string(Environment *_environment, char *_value, int _printing, int *_final_size)
Variable * new_music(Environment *_environment, int _size)
Emit code for NEW IMAGE(...).
Definition new_music.c:67
void charset_lowercase(Environment *_environment)
Definition charset_at.c:55
_GammaCorrection
Gamma correction type (for some palettes).
Definition ugbc.h:315
@ GAMMA_CORRECTION_TYPE2
Definition ugbc.h:324
@ GAMMA_CORRECTION_NONE
Definition ugbc.h:318
@ GAMMA_CORRECTION_TYPE1
Definition ugbc.h:321
void environment_parse_command_line(Environment *_environment, int _argc, char *_argv[])
Parse command line parameters.
void memload(Environment *_environment)
Definition memload.c:79
Variable * tilemap_storage(Environment *_environment, char *_filename, char *_alias, int _mode, int _flags, int _transparent_color, int _background_color, int _bank_expansion)
Emit code for LOAD TILEMAP(...).
Variable * variable_move_from_mt(Environment *_environment, char *_source, char *_destination)
Increment a variable by one.
void get_image_overwrite_size(Environment *_environment, char *_image, char *_x1, char *_y1, char *_x2, char *_y2)
void sprite_expand_vertical(Environment *_environment, int _sprite)
Emit ASM code for SPRITE [int] EXPAND VERTICAL.
Variable * tile_at(Environment *_environment, char *_x, char *_y)
Emit code for TILE AT.
Definition tile_at.c:53
void charset_uppercase(Environment *_environment)
Definition charset_at.c:51
void wave(Environment *_environment, char *_voice, char *_bits, char *_pulse)
Definition wave.c:41
void variable_add_inplace_type(Environment *_environment, char *_source, char *_field, int _dest)
Variable * sprite_converter(Environment *_environment, char *_data, int _width, int _height, int _depth, RGBi *_colorm, int _flags, int _slot_x, int _slot_y)
void variable_increment_type(Environment *_environment, char *_source, char *_field)
struct _ConfigureGMCParameters ConfigureGMCParameters
Variable * variable_resident(Environment *_environment, VariableType _type, char *_meaning)
Variable * variable_mul2_const(Environment *_environment, char *_source, int _bits)
Double a variable for various times and return the result.
Variable * variable_mul(Environment *_environment, char *_source, char *_dest)
Make a multiplication between two variable and return the product of them.
Variable * maximum(Environment *_environment, char *_source, char *_dest)
Return the maximum value between two expressions.
Definition max.c:93
RGBi * palette_promote_color_as_background(int _index, RGBi *_source, int _source_size)
Promote an index color in a palette.
void begin_for_mt_step(Environment *_environment, char *_index, char *_from, char *_to, char *_step)
Emit ASM code for FOR ... STEP ... NEXT (in thread).
void variable_decrement_type(Environment *_environment, char *_source, char *_field)
struct _Storage Storage
Structure of a single storage.
int variable_exists_by_realname(Environment *_environment, char *_name)
const char * strrstr(const char *haystack, const char *needle)
void bitmap_at_var(Environment *_environment, char *_address)
Emit ASM implementation for BITMAP AT [expression] instruction.
Definition bitmap_at.c:109
char * image_roll_x_right(Environment *_environment, char *_source, int _width, int _height)
int label_referred_exists_named(Environment *_environment, char *_label)
_LoopType
Types of loops supported.
Definition ugbc.h:1385
@ LT_LOOP
Definition ugbc.h:1405
@ LT_GAMELOOP
Definition ugbc.h:1402
@ LT_REPEAT
Definition ugbc.h:1393
@ LT_WHILE
Definition ugbc.h:1390
@ LT_FOR_MT
Definition ugbc.h:1399
@ LT_DO
Definition ugbc.h:1387
@ LT_FOR
Definition ugbc.h:1396
Variable * screen_tiles_get(Environment *_environment)
Variable * variable_xor(Environment *_environment, char *_left, char *_right)
Calculate logical "xor" and return it as the result.
POBuffer po_buf_add(POBuffer buf, char c)
Definition _optimizer.c:100
Variable * y_text_get(Environment *_environment, char *_y)
Return the text ordinate for the given graphic ordinate.
Definition y_text_get.c:83
void begin_procedure(Environment *_environment, char *_name)
Emit code for PROCEDURE ... END PROC.
void end_loop(Environment *_environment, int _do)
Emit ASM code for ... LOOP.
Definition end_loop.c:49
void poked_var(Environment *_environment, char *_address, char *_value)
Definition poke.c:262
void dojo_serial_put_request0(Environment *_environment, int _command, char *_param1, char *_param2, char *_result)
Definition dojo.c:51
void linker_setup(Environment *_environment)
Emit tail of linker's configuration file lines.
Definition _linker.c:48
void flash(Environment *_environment, char *_index, char *_register)
Emit code for FLASH.
Definition flash.c:44
void field_type(Environment *_environment, char *_name, VariableType _datatype)
Definition field_type.c:41
char * image_flip_x(Environment *_environment, char *_source, int _width, int _height, int _depth)
struct _OffsettingVariable OffsettingVariable
struct _Deployed Deployed
void variable_xor_inplace_vars(Environment *_environment, char *_source, char *_dest)
Add two variable and return the sum of them on the first.
void begin_for_step_assign(Environment *_environment, char *_step)
Definition begin_for.c:247
Variable * image_converter(Environment *_environment, char *_data, int _width, int _height, int _depth, int _offset_x, int _offset_y, int _frame_width, int _frame_height, int _mode, int _transparent_color, int _flags)
void const_define_float(Environment *_environment, char *_name, double _value)
void screen_mode(Environment *_environment, int _mode)
Emit ASM code for SCREEN [mode].
RGBi * malloc_palette(int _size)
Allocate a palette space.
StaticString * static_string_find_by_value(Environment *_environment, char *_value, int _Size)
void dojo_fujinet_has_response(Environment *_environment, char *_result)
_MusicType
Definition ugbc.h:239
@ MUSIC_TYPE_PSG
Definition ugbc.h:244
@ MUSIC_TYPE_AUTO
Definition ugbc.h:241
@ MUSIC_TYPE_MID
Definition ugbc.h:243
@ MUSIC_TYPE_IAF
Definition ugbc.h:242
@ MUSIC_TYPE_SJ2
Definition ugbc.h:245
int variable_delete(Environment *_environment, char *_name)
Constant * constant_create(Environment *_environment, char *_name)
struct _Strip Strip
void target_linkage(Environment *_environment)
Convert C64's assembly to executable.
Definition _build.c:327
void dojo_fujinet_put_request(Environment *_environment, int _command, char *_param1, char *_param2, char *_address, char *_size, char *_result)
void copper_use(Environment *_environment, char *_name)
Definition copper_use.c:81
enum _FloatTypeAngle FloatTypeAngle
void begin_for_mt(Environment *_environment, char *_index, char *_from, char *_to)
Variable * parse_buffer_definition(Environment *_environment, char *_buffer, VariableType _type, int _hex_only)
void center(Environment *_environment, char *_string, int _newline, char *_width)
Emit code for CENTRE ....
Definition center.c:124
void animation(Environment *_environment, char *_identifier, char *_atlas, char *_prefix, char *_next)
Emit code for ANIMATION ....
Definition animation.c:180
void wait_while_condition(Environment *_environment, char *_condition)
Definition wait_while.c:81
void console_restore(Environment *_environment, int _number)
Emit code for CONSOLE.
void music_seek_var(Environment *_environment, char *_position)
Definition music.c:124
void copper_move(Environment *_environment, int _address1, int _address2, VariableType _VariableType)
struct _ConfigureParameters ConfigureParameters
char * strcopy(char *_dest, char *_source)
enum _ConstantType ConstantType
Variable * bank_get_address_var(Environment *_environment, char *_bank)
Emit ASM code for instruction = BANK ADDRESS( ).
Variable * tile_class(Environment *_environment, char *_tileset, int _id)
Emit code for TILE CLASS(...).
Definition tile_class.c:73
void color_vars(Environment *_environment, char *_index, char *_shade)
Emit ASM code for instruction COLOR [expression], [expression].
Definition color.c:93
Variable * variable_string_instr(Environment *_environment, char *_search, char *_searched, char *_start)
Emit code for = INSTR( ..., ... [, ...] ).
Variable * variable_resize_buffer(Environment *_environment, char *_destination, int _size)
Resize the (static) size of a buffer.
struct _EmbedResult EmbedResult
void on_gosub_index(Environment *_environment, char *_label)
Emit ASM code for ... (of ON ... GOSUB ...).
Definition on_gosub.c:107
void gameloop_cleanup(Environment *_environment)
Emit source and configuration lines for game loops.
Definition _cleanups.c:50
void end_for_identifier(Environment *_environment, char *_identifier)
Emit ASM code for ... NEXT.
Definition end_for.c:49
void data_type(Environment *_environment)
Definition data.c:328
#define MAX_BUFFERED_OUTPUT
Definition ugbc.h:574
struct _NumberConfig NumberConfig
void add_complex_type(Environment *_environment, char *_variable, char *_field, int _expression, int _limit_lower, int _limit_upper, int _clamp)
Definition add.c:346
void variable_temporary_remove(Environment *_environment, char *_name)
char * image_enlarge_right(Environment *_environment, char *_source, int _width, int _height, int _delta)
void screen_off(Environment *_environment)
Emit ASM code for SCREEN OFF.
Definition screen_off.c:48
void rgbi_move(RGBi *_source, RGBi *_destination)
int embedparse(void *)
enum _BankType BankType
Type of memory banks.
struct _CpuOptimization CpuOptimization
int rgbi_distance(RGBi *_source, RGBi *_destination)
Calculate the distance between two colors.
void setup_text_variables(Environment *_environment)
Definition _init.c:61
struct _Constant Constant
Structure of a single constant.
void sprite_expand_horizontal(Environment *_environment, int _sprite)
Emit ASM code for SPRITE [int] EXPAND HORIZONTAL.
Variable * rotate_vector(Environment *_environment, char *_vector, char *_angle)
Emit ASM code to implement CREATE PATH command.
DataSegment * data_segment_find(Environment *_environment, char *_name)
void color_border_var(Environment *_environment, char *_border_color)
Emit ASM code for instruction COLOR BORDER [expression].
void goto_number(Environment *_environment, int _number)
Emit ASM code for GOTO [number].
Definition goto.c:148
Variable * variable_by_constant(Environment *_environment, VariableType _type, int _value)
void bank_write_vars_direct(Environment *_environment, char *_bank, char *_address1, char *_address2, char *_size)
Definition bank_write.c:80
void variable_move_array_type(Environment *_environment, char *_array, char *_field, char *_value)
Variable * scanshift(Environment *_environment)
Definition scanshift.c:43
void bar(Environment *_environment, char *_x0, char *_y0, char *_x1, char *_y1, char *_c, int _preserve_color)
Emit ASM code to implement BAR command.
Definition bar.c:100
Variable * fujinet_write(Environment *_environment, char *_value)
void return_label(Environment *_environment)
Emit ASM code for RETURN.
Definition return.c:71
int calculate_exact_tile(TileDescriptor *_tile, TileDescriptors *_tiles)
void declare_procedure(Environment *_environment, char *_name, int _address, int _system)
Emit code for DECLARE PROC ....
Variable * image_extract(Environment *_environment, char *_images, int _frame, int *_sequence)
Emit code for IMAGE(... FRAME ... STRIP ...).
void cset(Environment *_environment, char *_value)
Definition cset.c:73
void volume_vars(Environment *_environment, char *_volume, char *_channels)
Emit ASM code for VOLUME ....
Definition volume.c:96
void console_init(Environment *_environment)
Definition console.c:41
void screen_rows(Environment *_environment, int _rows)
Emit ASM code for SCREEN ROWS [integer].
Definition screen_rows.c:52
int banks_get_default_resident(Environment *_environment, int _bank)
Definition _banks.c:107
Variable * encrypt(Environment *_environment, char *_data, char *_key)
Emit code for ENCRYPT.
Definition encrypt.c:79
void dojo_partial(Environment *_environment)
Definition dojo.c:103
void end(Environment *_environment)
Emit ASM code for END.
Definition end.c:91
void poke_var(Environment *_environment, char *_address, char *_value)
Emit ASM code for POKE.
Definition poke.c:106
void dojo_put_requestd(Environment *_environment, int _command, char *_param1, char *_param2, char *_data, char *_size, char *_result)
Definition dojo.c:83
void end_for(Environment *_environment)
Definition end_for.c:71
#define MAX_CONSOLES
Definition ugbc.h:565
Variable * key_pressed(Environment *_environment, int _scancode)
Definition key_pressed.c:43
void environment_setup_embedded(Environment *_environment)
Definition _init.c:46
void variable_global(Environment *_environment, char *_pattern)
Variable * get_cmove(Environment *_environment, char *_x, char *_y)
Emit code for = CMOVE(...,...).
Definition get_cmove.c:78
void variable_store_array_const(Environment *_environment, char *_array, int _value)
void screen_vertical_scroll_var(Environment *_environment, char *_displacement)
Emit ASM code for SCREEN VERTICAL SCROLL [expression].
struct _OptionParameterValue OptionParameterValue
Structure of a single (option) setting.
void blit_define_compound_operand_to_register(Environment *_environment, int _register, int _source)
Variable * variable_store_float(Environment *_environment, char *_destination, double _value)
Store a string to a variable.
Variable * tilemap_at(Environment *_environment, char *_tilemap, char *_x, char *_y, char *_layer)
Return the height of a TILEMAP.
Definition tilemap_at.c:72
void bank_cleanup(Environment *_environment)
Emit source and configuration lines for banks.
Definition bank.c:52
Variable * variable_define(Environment *_environment, char *_name, VariableType _type, int _value)
Define a variable for the program.
Variable * variable_export(Environment *_environment, char *_name, VariableType _type, int _size_or_value)
Variable * spawn_procedure(Environment *_environment, char *_name, int _halted)
Emit code for SPAWN ....
Definition spawn.c:68
Variable * rnd(Environment *_environment, char *_value)
Return a random value.
Definition rnd.c:79
void read_data(Environment *_environment, char *_variable, int _safe)
Emit code for READ instruction.
Definition read_data.c:348
void variable_move_from_array_inplace(Environment *_environment, char *_array, char *_value)
Variable * image_get_width(Environment *_environment, char *_image)
Emit code for IMAGE WIDTH(...).
#define MAX_PALETTE
Definition ugbc.h:568
void screen_swap(Environment *_environment)
Emit code for SCREEN SWAP.
Definition screen_swap.c:49
void label_define_named(Environment *_environment, char *_label)
void cls(Environment *_environment, char *_paper)
Emit code for CLS.
Definition cls.c:48
void begin_while(Environment *_environment)
Emit ASM code for WHILE ....
Definition while.c:83
void console_vars(Environment *_environment, char *_x1, char *_x2, char *_x3, char *_x4)
Definition console.c:181
void on_gosub_number(Environment *_environment, int _number)
Emit ASM code for ... (of ON ... GOSUB ...).
Definition on_gosub.c:158
void fade_in(Environment *_environment, char *_period)
Emit code for FADE.
Definition fade_in.c:47
Variable * screen_get_height(Environment *_environment)
Variable * sign(Environment *_environment, char *_value)
Return the sign of a variable.
Definition sgn.c:85
ScreenMode * find_screen_mode_by_suggestion(Environment *_environment, int _bitmap, int _width, int _height, int _colors, int _tile_width, int _tile_height)
int banks_store_data(Environment *_environment, char *_data, int _size)
Definition _banks.c:312
void variable_move_array1_type_const(Environment *_environment, char *_array, char *_index, char *_field, int _value)
void dojo_fujinet_put_request0(Environment *_environment, int _command, char *_param1, char *_param2, char *_result)
Variable * tile_belong(Environment *_environment, char *_tile, char *_tiles)
Emit code for TILE ... BELONG TO ....
Definition tile_belong.c:70
void color_background_vars(Environment *_environment, char *_index, char *_background_color)
Emit ASM code for instruction COLOR BACKGROUND [expression] TO [expression].
void rot(Environment *_environment, char *_angle, char *_step)
Definition rot.c:78
ImageDescriptor * image_descriptor_roll_x_left(Environment *_environment, ImageDescriptor *_source)
void begin_for_step_prepare_mt(Environment *_environment)
Variable * dojo_open_port(Environment *_environment, char *_name)
Variable * x_graphic_get(Environment *_environment, char *_x)
Return the graphic abscissa for the given text abscissa.
void music_stop(Environment *_environment)
Definition music.c:109
void rightb(Environment *_environment, char *_line, char *_column, char *_width, char *_height)
Emit code for RIGHTB ....
Definition rightb.c:80
void generate_cgoto_address_table(Environment *_environment)
Definition _var.c:122
void bank_read_vars_direct_size(Environment *_environment, char *_bank, char *_address1, char *_address2, int _size)
Definition bank_read.c:169
void mmove_memory_video(Environment *_environment, char *_from, char *_to, char *_size)
Emit ASM code for MMOVE {VIDEO} [expr] TO {VIDEO} [expr] SIZE [expr].
Definition mmove.c:77
Variable * variable_direct_assign(Environment *_environment, char *_var, char *_expr)
struct _Embedded Embedded
Variable * variable_array_max_vars(Environment *_environment, char *_name)
Variable * ypen(Environment *_environment)
Emit ASM code for = YPEN().
Definition ypen.c:51
void dsave(Environment *_environment, char *_filename, char *_offset, char *_address, char *_size)
Emit code for DLOAD(...).
Definition dsave.c:58
void wait_until_condition(Environment *_environment, char *_condition)
Definition wait_until.c:77
Variable * bank_get(Environment *_environment)
Emit ASM code for instruction = BANK( ).
Definition bank_get.c:71
void cgoto(Environment *_environment, char *_expression)
Definition cgoto.c:85
void tilemap_enable(Environment *_environment, int _width, int _height, int _colors, int _tile_width, int _tile_height)
Emit ASM implementation for TEXT ENABLE instruction.
void colormap_clear_with_vars(Environment *_environment, char *_foreground, char *_background)
Emit ASM implementation for COLORMAP CLEAR WITH [expression] ON [expression] instruction.
Variable * variable_sl_const(Environment *_environment, char *_source, int _bits)
Type * type_find(Type *_first, char *_name)
float max_of_two(float _x, float _y)
void draw(Environment *_environment, char *_x0, char *_y0, char *_x1, char *_y1, char *_c, int _preserve_color)
Emit ASM code to implement DRAW command.
Definition draw.c:153
POVariable * po_var_lookup(char *_name)
Definition _optimizer.c:360
void data_floating(Environment *_environment, double _value)
Emit code for DATA instruction (float values).
Definition data.c:225
Variable * get_timer(Environment *_environment)
Emit code for = TI.
Definition timer.c:47
void case_equals_label(Environment *_environment)
Definition case_equals.c:74
void dojo_get_responsed(Environment *_environment, char *_status, char *_data, char *_size)
Definition dojo.c:133
void rightw(Environment *_environment, char *_line, char *_column, char *_width, char *_height)
Emit code for RIGHTW ....
Definition rightw.c:82
void hires(Environment *_environment, char *_foreground, char *_background)
Definition hires.c:41
void label_referred_define_numeric(Environment *_environment, int _label)
void screen_horizontal_scroll(Environment *_environment, int _displacement)
Emit ASM code for SCREEN HORIZONTAL SCROLL [int]x.
void dload(Environment *_environment, char *_filename, char *_offset, char *_address, char *_bank, char *_size)
Emit code for DLOAD(...).
Definition dload.c:60
void begin_loop(Environment *_environment, int _do)
Emit ASM code for DO ....
Definition begin_loop.c:49
void blit_image(Environment *_environment, char *_blit, char *_x, char *_y, char *_frame, char *_sequence, int _flags)
Emit ASM code for BLIT IMAGE [image] AT [int],[int].
Definition blit_image.c:53
void begin_type(Environment *_environment, char *_name)
Emit code for STORAGE ... ENDSTORAGE.
Definition begin_type.c:117
void music_resume(Environment *_environment)
Definition music.c:95
Variable * image_ref(Environment *_environment, char *_image)
Definition image_ref.c:43
void console_calculate_vars(Environment *_environment)
Definition 6847.c:316
struct _Loop Loop
Structure of a single loop.
void play_off(Environment *_environment, int _channels)
Emit ASM code for PLAY OFF.
Definition play_off.c:54
struct _Conditional Conditional
Structure of a single conditional jump.
void else_if_then(Environment *_environment, char *_expression)
Emit ASM code for ... ELSE [IF] ....
void fujinet_password(Environment *_environment, char *_password)
Variable * console_tiles_get_width(Environment *_environment)
void case_equals(Environment *_environment, int _value)
Emit ASM code for CASE ....
enum _LoopType LoopType
Types of loops supported.
void instrument_semi_var(Environment *_environment, int _instrument, char *_channels)
Emit ASM code for INSTRUMENT ....
Definition instrument.c:69
int po_buf_is_hex(POBuffer _s)
Definition _optimizer.c:323
Variable * text_get_xcurs(Environment *_environment)
Definition text.c:122
void fade_out(Environment *_environment, char *_period)
Emit code for FADE.
Definition fade_out.c:47
void sys_var(Environment *_environment, char *_address)
Definition sys.c:176
void shell_injection(Environment *_environment)
Definition _shell.c:41
void bank_write_vars_bank_direct_size(Environment *_environment, char *_address1, int _bank, char *_address2, int _size)
Definition bank_write.c:111
Variable * clear_key(Environment *_environment)
Definition clear_key.c:43
void gprint(Environment *_environment, char *_atlas, char *_text, char *_x, char *_y)
Emit code for GPRINT... instruction.
Definition gprint.c:100
void cmove_direct(Environment *_environment, int _dx, int _dy)
Definition cmove.c:41
Variable * image_load_from_buffer(Environment *_environment, char *_buffer, int _buffer_size)
Emit code for (IMAGE)#[...].
void run(Environment *_environment)
Emit code for RUN.
Definition run.c:66
void define_implicit_array_if_needed(Environment *_Environment, char *_name)
void flip_image_vars(Environment *_environment, char *_image, char *_frame, char *_sequence, char *_direction)
Emit ASM code for FLIP IMAGE X/Y/XY/YX [image].
Definition flip_image.c:56
void use_tileset(Environment *_environment, char *_tileset)
Emit code for USE TILESET xxx.
Definition use_tileset.c:63
void vars_emit_constants(Environment *_environment)
Definition _vars.c:58
void end_procedure(Environment *_environment, char *_value)
Emit code for END PROC.
Definition end_proc.c:72
Variable * fujinet_http_post_bin_type(Environment *_environment, char *_value, VariableType _type)
void next_raster_at_with_var(Environment *_environment, char *_var, char *_with)
Emit ASM code for NEXT RASTER AT [expresssion] WITH label.
Variable * tileset_load(Environment *_environment, char *_filename, char *_alias, int _mode, int _flags, int _transparent_color, int _background_color, int _bank_expansion)
Emit code for LOAD TILESERT(...).
void memorize(Environment *_environment)
Definition memorize.c:67
void point_at(Environment *_environment, int _x, int _y)
Emit ASM code for POINT AT ([int],[int]).
Definition point_at.c:54
void color_sprite_vars(Environment *_environment, char *_sprite, char *_color)
Emit ASM code for instruction COLOR SPRITE [expression] TO [expression].
int po_buf_trim(POBuffer buf)
Definition _optimizer.c:157
void parser_array_index_numeric(Environment *_environment, int _index)
enum _HardwareName HardwareName
struct _Macro Macro
void play(Environment *_environment, int _note, int _duration, int _channels)
Emit ASM code for PLAY ....
Definition play.c:57
Variable * new_sequence(Environment *_environment, int _sequences, int _frames, int _width, int _height, int _mode)
Emit code for NEW SEQUENCE(...).
struct _Console Console
Field * field_find(Type *_type, char *_name)
void target_deep_analyzer(Environment *_environment)
struct _LoadedFile LoadedFile
void exit_loop_if(Environment *_environment, char *_expression, int _number)
Emit ASM code for EXIT IF.
void begin_for_to_prepare(Environment *_environment)
Definition begin_for.c:206
char * file_read_csv(Environment *_Environment, char *_filename, VariableType _type, int *_size, int *_count)
StaticString * string_reserve(Environment *_environment, char *_value)
_FloatTypePrecision
Definition ugbc.h:852
@ FT_FAST
Definition ugbc.h:854
@ FT_SINGLE
Definition ugbc.h:855
Variable * variable_move_to_mt(Environment *_environment, char *_source, char *_destination)
enum _FloatTypePrecision FloatTypePrecision
void on_goto_end(Environment *_environment)
Emit ASM code for ... (of ON ... GOTO ...).
Definition on_goto.c:164
void ink(Environment *_environment, char *_expression)
Emit code for INK ... command.
Definition ink.c:69
Variable * fujinet_http_post_bin(Environment *_environment, char *_value)
void variable_sub_inplace(Environment *_environment, char *_source, char *_dest)
Make a differenze between two variable and assign the difference of them to the first.
Variable * images_load(Environment *_environment, char *_filename, char *_alias, int _mode, int _frame_width, int _frame_height, int _flags, int _transparent_color, int _background_color, int _bank_expansion, int _origin_x, int _origin_y, int _offset_x, int _offset_y)
Emit code for LOAD IMAGE(...).
void goto_label(Environment *_environment, char *_label)
Emit ASM code for GOTO [label].
Definition goto.c:115
int image_size(Environment *_environment, int _width, int _height)
Definition image_size.c:41
Variable * variable_add(Environment *_environment, char *_source, char *_dest)
Add two variable and return the sum of them.
void po_var_init()
Definition _optimizer.c:336
void parser_array_init(Environment *_environment)
void begin_for_identifier_mt(Environment *_environment, char *_index)
void const_define_string(Environment *_environment, char *_name, char *_value)
void begin_storage(Environment *_environment, char *_name, char *_file_name)
Emit code for STORAGE ... ENDSTORAGE.
Variable * load(Environment *_environment, char *_filename, char *_alias, int _at, int _bank_expansion, int _flags)
Emit code for LOAD(...).
Definition load.c:89
void fujinet_json_query(Environment *_environment, char *_query)
void scroll(Environment *_environment, int _dx, int _dy)
Definition scroll.c:41
void stop_movement(Environment *_environment, char *_prefix)
Emit code for STOP ....
_HardwareName
Definition ugbc.h:346
@ HN_SN76489
Definition ugbc.h:349
@ HN_GMC
Definition ugbc.h:348
struct _AudioConfig AudioConfig
void variable_move_array1_type_fields(Environment *_environment, char *_array, char *_index, char *_field1, char *_field2)
void bitmap_enable(Environment *_environment, int _width, int _height, int _colors)
Emit ASM implementation for BITMAP ENABLE instruction.
Variable * collision_to(Environment *_environment, int _sprite)
Emit ASM code for = COLLISION([int]x).
Definition collision.c:57
void color_border(Environment *_environment, int _border_color)
Emit ASM code for instruction COLOR BORDER [int]x.
_BankType
Type of memory banks.
Definition ugbc.h:120
@ BT_CODE
Definition ugbc.h:123
@ BT_VARIABLES
Definition ugbc.h:126
@ BT_DATA
Definition ugbc.h:132
@ BT_EXPANSION
Definition ugbc.h:138
@ BT_STRINGS
Definition ugbc.h:135
@ BT_TEMPORARY
Definition ugbc.h:129
int show_troubleshooting_and_exit(Environment *_environment, int _argc, char *_argv[])
void fade_in_color(Environment *_environment, int _index, int _shade)
void on_proc_end(Environment *_environment)
Emit ASM code for ... (of ON ... PROC ...).
Definition on_proc.c:162
Variable * bank_get_address(Environment *_environment, int _bank)
Emit ASM code for instruction = BANK ADDRESS( ).
void dojo_end(Environment *_environment)
Definition dojo.c:173
void wait_key(Environment *_environment, int _release)
Definition wait_key.c:43
void begin_for_to_assign_mt(Environment *_environment, char *_to)
char * generate_storage_filename(Environment *_environment, char *_prefix, char *_suffix, int _number)
enum _FileStorageFormat FileStorageFormat
void copper_color_background(Environment *_environment, int _color)
Emit code for BEGIN COPPER.
void bank_write_semi_var(Environment *_environment, char *_address2, int _bank, int _address1, int _size)
Definition bank_write.c:127
Variable * xpen(Environment *_environment)
Emit ASM code for = XPEN().
Definition xpen.c:51
void memclr(Environment *_environment, char *_address, char *_size, char *_value)
Definition memclr.c:64
void sys_call(Environment *_environment, int _address)
Definition sys_call.c:41
struct _OptionParameterValued OptionParameterValued
char * resource_load_asserts(Environment *_environment, char *_filename)
void point_at_vars(Environment *_environment, char *_x, char *_y)
Emit ASM code for POINT AT ([int]x,[int]x).
Definition point_at.c:80
Variable * combine_nibble_vars(Environment *_environment, char *_low_byte, char *_high_byte)
Emit code for COMBINE NIBBLE.
void suspend_vars(Environment *_environment, char *_thread)
Emit code for SUSPEND ....
Definition suspend.c:71
void boom(Environment *_environment, int _duration, int _channels)
Emit ASM code for BOOM ....
Definition boom.c:55
void bank_read_vars_bank_direct_size_vars(Environment *_environment, int _bank, char *_address1, char *_address2, int _size)
Definition bank_read.c:178
void variable_move_from_array_type_inplace(Environment *_environment, char *_array, char *_field, char *_value)
Variable * strig(Environment *_environment, int _port)
Definition strig.c:41
Variable * tileset_of_vars(Environment *_environment, char *_tilemap)
Definition tileset_of.c:58
POBuffer po_buf_vprintf(POBuffer buf, const char *fmt, va_list ap)
Definition _optimizer.c:111
ImageDescriptor * image_descriptor_flip_y(Environment *_environment, ImageDescriptor *_source)
void offsetting_add_variable_reference(Environment *_environment, Offsetting *_first, Variable *_var, int _sequence)
Variable * origin_resolution_relative_transform_y(Environment *_environment, char *_y, int _is_relative)
void back(Environment *_environment, char *_color)
Emit ASM code to fill background color.
Definition back.c:53
void restore_label(Environment *_environment, char *_label)
Definition restore.c:95
char * strtoupper(char *_string)
Variable * variable_sub(Environment *_environment, char *_source, char *_dest)
Make a differenze between two variable and return the difference of them.
void exit_loop(Environment *_environment, int _number)
Emit ASM code for EXIT.
Definition exit_loop.c:97
void bank_read_vars(Environment *_environment, char *_bank, char *_address1, char *_address2, char *_size)
Emit ASM code for instruction BANK READ ....
Definition bank_read.c:107
Variable * variable_cast(Environment *_environment, char *_source, VariableType _type)
Cast a variable from a type to another.
void variable_add_inplace_vars(Environment *_environment, char *_source, char *_dest)
Add two variable and return the sum of them on the first.
void end_build(Environment *_environment)
End building exe from asssembly.
Definition _build.c:57
Variable * variable_string_len(Environment *_environment, char *_string)
Emit code for = LEN( ... ).
struct _StaticString StaticString
Structure of a single (static) string.
void run_parallel(Environment *_environment)
Emit code for RUN PARALLEL.
Variable * sqroot(Environment *_environment, char *_value)
Return the square root of a variable.
Definition sqr.c:98
Variable * music_load_to_variable(Environment *_environment, char *_filename, char *_alias, int _bank_expansion)
Definition _music.c:732
Variable * variable_temporary(Environment *_environment, VariableType _type, char *_meaning)
Define a temporary variable.
void inkb(Environment *_environment, char *_value, char *_color1, char *_color2)
Emit code for INKB ... command.
Definition inkb.c:73
struct _FileStorage FileStorage
Structure of a single file inside a storage.
int label_referred_exists_numeric(Environment *_environment, int _label)
void dojo_put_requestds(Environment *_environment, int _command, char *_param1, char *_param2, char *_data, int _size, char *_result)
Definition dojo.c:93
struct _TileDescriptor TileDescriptor
void cls_box(Environment *_environment, char *_x1, char *_y1, char *_w, char *_h)
Definition cls_box.c:43
int rgbi_extract_palette(Environment *_environment, unsigned char *_source, int _width, int _height, int _depth, RGBi _palette[], int _palette_size, int _sorted)
Extract the color palette from the given image.
void movement(Environment *_environment, char *_identifier, char *_atlas, char *_prefix)
Emit code for MOVEMENT ....
Definition movement.c:123
void screen_columns(Environment *_environment, int _columns)
Emit ASM code for SCREEN COLUMNS [integer].
Variable * image_storage(Environment *_environment, char *_source_name, char *_target_name, int _mode, int _flags, int _transparent_color, int _background_color, int _bank_expansion)
Emit code for IMAGE ... AS ....
Variable * joy_vars(Environment *_environment, char *_port)
Definition joy.c:41
void every_off(Environment *_environment, char *_timer)
Emit ASM code for EVERY OFF.
Definition every_off.c:51
Variable * vector_get_x(Environment *_environment, char *_vector)
void input(Environment *_environment, char *_variable, VariableType _default_type)
Definition input.c:43
void sound_vars(Environment *_environment, char *_freq, char *_duration, char *_channels)
Emit ASM code for SOUND ....
Definition sound.c:79
void dojo_fujinet_get_response_payloadd(Environment *_environment, char *_address)
Offsetting * offsetting_size_count(Environment *_environment, int _size, int _count)
Variable * image_load(Environment *_environment, char *_filename, char *_alias, int _mode, int _flags, int _transparent_color, int _background_color, int _bank_expansion)
Emit code for LOAD IMAGE(...).
Definition image_load.c:200
void wait_milliseconds_var(Environment *_environment, char *_timing)
Emit ASM code for WAIT [expression] MILLISECONDS.
POBuffer po_buf_cat(POBuffer buf, char *string)
Definition _optimizer.c:83
void remember(Environment *_environment)
Definition remember.c:68
void sprite_compress_horizontal(Environment *_environment, int _sprite)
Emit ASM code for SPRITE [int] COMPRESS HORIZONTAL.
void end_type(Environment *_environment)
Emit code for ENDSTORAGE.
Definition end_type.c:47
RGBi * palette_promote_color_as_foreground(int _index, RGBi *_source, int _source_size, int _max_size)
Promote an index color in a palette.
void dojo_begin(Environment *_environment)
Definition dojo.c:53
struct _MultiplexingSpriteConfig MultiplexingSpriteConfig
void variable_add_inplace_array(Environment *_environment, char *_source, char *_destination)
Add a variable to an array element, and return the sum of them on the array element.
struct _Label Label
Structure of a single label.
struct _ProtothreadConfig ProtothreadConfig
Variable * variable_store_array(Environment *_environment, char *_destination, unsigned char *_buffer, int _size, int _at)
void variable_move_from_array1_type_inplace(Environment *_environment, char *_array, char *_index, char *_field, char *_value)
void memor(Environment *_environment, char *_address, char *_eaddress, char *_bank)
Definition memor.c:75
void begin_do_loop(Environment *_environment)
Emit ASM code for DO ....
Variable * hit_to_vars(Environment *_environment, char *_sprite)
Emit ASM code for = HIT([expression]).
Definition hit.c:77
void sprite_compress_vertical(Environment *_environment, int _sprite)
Emit ASM code for SPRITE [int] CPMPRESS VERTICAL.
void flash_off(Environment *_environment, char *_index)
Definition flash.c:48
float max_of_three(float _m, float _n, float _p)
void variable_swap(Environment *_environment, char *_source, char *_dest)
Swap values of two variables.
Variable * get_tab(Environment *_environment)
Emit code for TAB$.
Definition get_tab.c:71
enum _HardwareParameterName HardwareParameterName
enum _OutputFileType OutputFileType
void environment_setup_default(Environment *_environment)
Setup default environment values.
Variable * peek_var(Environment *_environment, char *_location)
Emit ASM code for PEEK(...).
Definition peek.c:130
void restore_label_unsafe(Environment *_environment, char *_label)
struct _DataDataSegment DataDataSegment
void textmap_at_var(Environment *_environment, char *_address)
Emit ASM code for TEXTMAP AT [expression].
Definition textmap_at.c:88
Variable * tile_get_first(Environment *_environment, char *_tile)
Emit code for TILE FIRST(...).
void target_cleanup(Environment *_environment)
Definition _build.c:343
enum _AnimationType AnimationType
Variable * variable_string_dup(Environment *_environment, char *_string, char *_repetitions)
void file_storage(Environment *_environment, char *_source_name, char *_target_name, FileStorageFormat _format, VariableType _type)
Emit code for FILE ... AS ....
void dojo_fujinet_get_response(Environment *_environment, char *_status, char *_data, char *_size)
Bank * bank_define(Environment *_environment, char *_name, BankType _type, int _address, char *_filename)
Implementation for BANK xxx AT [WITH yyy].
Definition bank.c:108
char * strreplace(const char *_orig, const char *_rep, const char *_with)
void copper_store(Environment *_environment, int _address, int _value, VariableType _VariableType)
void textmap_at(Environment *_environment, int _address)
Emit ASM code for TEXTMAP AT [int]xx.
Definition textmap_at.c:61
Variable * variable_array_count_vars(Environment *_environment, char *_name, char *_target)
void color(Environment *_environment, int _index, int _shade)
Emit ASM code for instruction COLOR [int], [int].
Definition color.c:59
void upw(Environment *_environment, char *_line, char *_column, char *_width, char *_height)
Emit code for UPB ....
Definition upw.c:82
void dojo_fujinet_init(Environment *_environment)
char * parse_buffer(Environment *_environment, char *_buffer, int *_size, int _hex_only)
void bank_read_vars_direct(Environment *_environment, char *_bank, char *_address1, char *_address2, char *_size)
Definition bank_read.c:138
StaticString * static_string_create_filled(Environment *_environment, int _size, char _value)
Variable * variable_or(Environment *_environment, char *_left, char *_right)
Calculate logical "or" and return it as the result.
void play_string(Environment *_environment, char *_string)
Definition play_string.c:77
void variable_increment_mt(Environment *_environment, char *_source)
Increment a variable by one.
Variable * variable_compare(Environment *_environment, char *_source, char *_dest)
Compare two variable and return the result of comparation.
void play_off_var(Environment *_environment, char *_channels)
Emit ASM code for PLAY OFF ....
Definition play_off.c:68
void variable_array_fill(Environment *_environment, char *_name, int _value)
void variable_reset(Environment *_environment)
Reset the usage flags for the temporary variable pool.
void leftb(Environment *_environment, char *_line, char *_column, char *_width, char *_height)
Emit code for LEFTB ....
Definition leftb.c:80
Variable * get_raster_line(Environment *_environment)
Emit ASM code for RASTER LINE.
void variable_move_from_type_inplace(Environment *_environment, char *_type, char *_field, char *_value)
#define MAX_PROCEDURES
Definition ugbc.h:571
void gosub_label(Environment *_environment, char *_label)
Emit ASM code for GOSUB [label].
Definition gosub.c:116
Variable * animating(Environment *_environment, char *_prefix, char *_animation)
Emit code for RUN PARALLEL.
Definition animating.c:66
Variable * image_get_height(Environment *_environment, char *_image)
Emit code for IMAGE HEIGHT(...).
void variable_array_shuffle(Environment *_environment, char *_name, int _rounds)
struct _JoystickConfig JoystickConfig
void randomize(Environment *_environment, char *_seed)
Emit ASM code for RANDOMIZE.
Definition randomize.c:48
Variable * fujinet_is_ready(Environment *_environment)
void sprite_compress_vertical_var(Environment *_environment, char *_sprite)
Emit ASM code for SPRITE [expression] COMPRESS VERTICAL.
void bell(Environment *_environment, int _note, int _duration, int _channels)
Emit ASM code for BELL ....
Definition bell.c:56
void out_var(Environment *_environment, char *_port, char *_value)
Emit ASM code for OUT.
Definition out.c:108
void print(Environment *_environment, char *_text, int _new_line, int _raw)
Emit code for PRINT... instruction.
Definition print.c:141
Variable * variable_div_const(Environment *_environment, char *_source, int _dest, char *_remainder)
char * get_default_temporary_path()
void dojo_get_response_size(Environment *_environment, char *_status, char *_size)
Definition dojo.c:143
int po_buf_cmp(POBuffer a, POBuffer b)
Definition _optimizer.c:152
void wait_until(Environment *_environment)
Emit code for WAIT UNTIL ....
Definition wait_until.c:71
void buffered_push_output(Environment *_environment)
void colormap_clear(Environment *_environment)
Emit ASM implementation for COLORMAP CLEAR instruction.
void color_semivars(Environment *_environment, int _index, char *_shade)
Emit ASM code for instruction COLOR [expression], [expression].
Definition color.c:75
void call_procedure(Environment *_environment, char *_name)
Emit code for CALL/PROC ....
Definition call.c:139
RGBi * palette_remove_duplicates(RGBi *_source, int _source_size, int *_unique_size)
Remove duplicates from a palette.
Variable * variable_store_type(Environment *_environment, char *_source, char *_signed, unsigned int _value)
void end_while(Environment *_environment)
Emit ASM code for ... WEND.
Definition while.c:127
void target_analysis(Environment *_environment)
Definition _cleanup.c:68
Variable * param_procedure(Environment *_environment, char *_name)
Emit code for PARAM(...).
Definition param.c:71
Variable * fujinet_set_channel_mode(Environment *_environment, int _mode)
enum _VariableType VariableType
Type of variables.
void dojo_fujinet_partial(Environment *_environment)
void fade_in_color_vars(Environment *_environment, char *_index, char *_shade)
Emit ASM code for instruction COLOR [expression], [expression].
void clear(Environment *_environment)
Definition clear.c:41
void finalize_text_variables(Environment *_environment)
Definition _init.c:169
Variable * sbpen_get(Environment *_environment, char *_index)
Definition sb.c:61
Variable * music_load(Environment *_environment, char *_filename, char *_alias, int _bank_expansion)
Emit code for LOAD MUSIC(...).
Definition music_load.c:71
void memsave(Environment *_environment)
Definition memsave.c:78
int tile_id(Environment *_environment, char *_tileset, char *_id)
Emit code for TILE ID(...).
Definition tile_id.c:72
void interleaved_instructions(Environment *_environment)
Definition _init.c:123
void text_hscroll_line(Environment *_environment, int _direction, int _overlap)
void on_goto_index(Environment *_environment, char *_label)
Emit ASM code for ... (of ON ... GOTO ...).
Definition on_goto.c:105
Variable * fujinet_parse_json(Environment *_environment)
Variable * fujinet_read_type(Environment *_environment, VariableType _type)
void fellipse(Environment *_environment, char *_x, char *_y, char *_rx, char *_ry, char *_c, int _preserve_color)
Emit code for ELLIPSE command.
Definition fellipse.c:93
void pause_seconds(Environment *_environment, char *_string, char *_duration)
Definition pause.c:67
void dojo_serial_put_requestds(Environment *_environment, int _command, char *_param1, char *_param2, char *_data, int _size, char *_result)
Definition dojo.c:68
ImageDescriptor * image_descriptor_roll_y_down(Environment *_environment, ImageDescriptor *_source)
void memdef(Environment *_environment, char *_size, char *_address, char *_eaddress, char *_bank)
Definition memdef.c:74
Variable * parser_adapted_numeric(Environment *_environment, int _number)
void print_tab(Environment *_environment, int _new_line)
Emit code for print a single TAB.
Definition print.c:398
void text_hscroll_screen(Environment *_environment, int _direction, int _overlap)
void variable_add_inplace(Environment *_environment, char *_source, int _dest)
void begin_repeat(Environment *_environment)
Emit ASM code for REPEAT ....
Variable * variable_move_from_array_type(Environment *_environment, char *_array, char *_field)
void configure_set_value_var(Environment *_environment, int _name, int _parameter, char *_value)
void every_cleanup(Environment *_environment)
Definition _every.c:41
char * banks_get_address(Environment *_environment, int _bank)
Definition _banks.c:121
void tiles_at_var(Environment *_environment, char *_address)
Emit ASM code for TILES AT [expression].
Definition tiles.c:83
char * get_temporary_filename(Environment *_environment)
void font_descriptors_init(Environment *_environment, int _embedded_present)
void add_complex_array_type(Environment *_environment, char *_variable, char *_field, char *_expression, char *_limit_lower, char *_limit_upper, int _clamp)
Definition add.c:295
void dojo_serial_get_response(Environment *_environment, char *_status, char *_data, char *_size)
Definition dojo.c:80
Variable * serial_read(Environment *_environment, char *_size)
Emit code for SERIAL READ(...).
Definition serial_read.c:41
void draw_tsb_string(Environment *_environment, char *_string, char *_x, char *_y, char *_c, int _preserve_color)
void error(Environment *_environment, char *_message)
Emit ASM code for ERROR.
Definition error.c:73
Variable * strptr(Environment *_environment, char *_name)
Emit code for function = STRPTR( ... ).
Definition strptr.c:66
void memlen(Environment *_environment, char *_size)
Definition memlen.c:66
char * image_roll_x_left(Environment *_environment, char *_source, int _width, int _height)
void dojo_serial_get_response_payloadd(Environment *_environment, char *_address)
Definition dojo.c:104
enum _MusicType MusicType
void buffered_pop_output(Environment *_environment)
void text_vscroll_screen(Environment *_environment, int _direction, int _overlap)
void banks_generate(Environment *_environment)
Definition _banks.c:45
void defdgr_vars(Environment *_environment, char *_character, char *_b0, char *_b1, char *_b2, char *_b3, char *_b4, char *_b5, char *_b6, char *_b7)
Emit code for DATA instruction (numeric values).
Definition defdgr.c:94
Variable * variable_retrieve_by_realname(Environment *_environment, char *_name)
Variable * distance(Environment *_environment, char *_x1, char *_y1, char *_x2, char *_y2)
Return the distance between two (screen) positions.
Definition distance.c:76
struct _DataSegment DataSegment
void put_image_vars(Environment *_environment, char *_image, char *_x1, char *_y1, char *_x2, char *_y2, char *_frame, char *_sequence, char *_flags)
Emit ASM code for PUT IMAGE [image] AT [int],[int].
Definition put_image.c:406
void variable_decrement_mt(Environment *_environment, char *_source)
Decrement a variable by one.
char * import_file_name(char *_import_path)
void plot(Environment *_environment, char *_x, char *_y, char *_c, int _preserve_color)
Emit code for PLOT.
Definition plot.c:46
_PeepHoleOptimizationKind
Definition ugbc.h:278
@ RELOCATION2
Definition ugbc.h:282
@ DEADVARS
Definition ugbc.h:280
@ RELOCATION1
Definition ugbc.h:281
@ PEEPHOLE
Definition ugbc.h:279
void leftw(Environment *_environment, char *_line, char *_column, char *_width, char *_height)
Emit code for LEFTW ....
Definition leftw.c:82
void colormap_at_var(Environment *_environment, char *_address)
Emit ASM implementation for COLORMAP AT [expression] instruction.
Definition colormap_at.c:82
void flip_image_vars_direction(Environment *_environment, char *_image, char *_frame, char *_sequence, int _direction)
Definition flip_image.c:44
Variable * variable_compare_not(Environment *_environment, char *_source, char *_dest)
Compare two variable and return the result of comparation.
void console_save_vars(Environment *_environment, char *_number)
void color_sprite_semi_vars(Environment *_environment, int _index, char *_color)
Variable * screen_can(Environment *_environment, int _mode)
Emit ASM code for CAN SCREEN [mode].
Definition screen_can.c:72
void color_background(Environment *_environment, int _index, int _background_color)
Emit ASM code for instruction COLOR BACKGROUND [int] TO [int]x.
void end_compilation(Environment *_environment)
Definition _cleanups.c:58
char * image_enlarge_bottom(Environment *_environment, char *_source, int _width, int _height, int _delta)
void wait_fire_semivar(Environment *_environment, char *_port, int _release)
Definition wait_fire.c:49
Variable * minimum(Environment *_environment, char *_source, char *_dest)
Return the minimum value between two expressions.
Definition min.c:94
void jmove(Environment *_environment, char *_port, char *_x, char *_y, char *_minx, char *_maxx, char *_miny, char *_maxy, char *_xstep, char *_ystep)
Definition jmove.c:70
Variable * decrypt(Environment *_environment, char *_data, char *_key, char *_var)
Emit code for DECRYPT.
Definition decrypt.c:81
void begin_for_to(Environment *_environment, char *_to)
Variable * images_load_from_buffer(Environment *_environment, char *_buffer, int _buffer_size)
Emit code for (IMAGES)#[...].
void upb(Environment *_environment, char *_line, char *_column, char *_width, char *_height)
Emit code for UPB ....
Definition upb.c:80
Variable * serial_write(Environment *_environment, char *_data)
Emit code for SERIAL WRITE(...).
Variable * tile_get_width(Environment *_environment, char *_tile)
Emit code for TILE WIDTH(...).
Variable * bank_get_count(Environment *_environment)
Emit ASM code for instruction = BANK COUNT.
Variable * tile_get_height(Environment *_environment, char *_tile)
Emit code for TILE HEIGHT(...).
void data_numeric(Environment *_environment, int _value)
Emit code for DATA instruction (numeric values).
Definition data.c:162
void vars_emit_strips(Environment *_environment, char *_name, Strip *_strips)
Definition _vars.c:118
int system_remove_safe(Environment *_environment, char *_filename)
struct _Bank Bank
Structure of a single bank.
void repeat(Environment *_environment, char *_label)
void fujinet_close(Environment *_environment)
void volume(Environment *_environment, int _volume, int _channels)
Emit ASM code for VOLUME ....
Definition volume.c:70
Variable * bank_get_size(Environment *_environment, int _bank)
Emit ASM code for instruction = BANK SIZE( ).
void on_gosub_end(Environment *_environment)
Emit ASM code for ... (of ON ... GOSUB ...).
Definition on_gosub.c:177
void pokew_var(Environment *_environment, char *_address, char *_value)
Definition poke.c:187
char * escape_newlines_full(char *_string, int _size)
void print_newline(Environment *_environment)
Emit code for print a single newline.
Definition print.c:422
void memory_area_assign(MemoryArea *_first, Variable *_variable)
void cpuspeed(Environment *_environment, char *_value)
Emit ASM code for CPUSPEED.
Definition cpuspeed.c:49
Variable * joyy(Environment *_environment, int _port)
Definition joy_analog.c:73
enum _FujiNetDefine FujiNetDefine
RGBi * palette_match(RGBi *_source, int _source_size, RGBi *_system, int _system_size)
Make a "palette match".
Variable * variable_move(Environment *_environment, char *_source, char *_dest)
Store the value of a variable inside another variable by converting it.
void downb(Environment *_environment, char *_line, char *_column, char *_width, char *_height)
Emit code for DOWNB ....
Definition downb.c:80
void read_data_unsafe(Environment *_environment, char *_variable)
void copper_nop(Environment *_environment)
Emit code for BEGIN COPPER.
Definition copper_nop.c:84
_FloatTypeAngle
Definition ugbc.h:859
@ FT_DEGREE
Definition ugbc.h:862
@ FT_RADIAN
Definition ugbc.h:861
void end_do_loop(Environment *_environment)
Emit ASM code for ... LOOP.
Definition end_do_loop.c:49
void paper(Environment *_environment, char *_paper)
Emit code for PAPER ... command.
Definition paper.c:47
POVariable * po_var_find(char *_name)
Definition _optimizer.c:349
void dojo_serial_begin(Environment *_environment)
Definition dojo.c:47
void mmove_video_memory(Environment *_environment, char *_from, char *_to, char *_size)
Emit ASM code for MMOVE {VIDEO} [expr] TO {VIDEO} [expr] SIZE [expr].
Definition mmove.c:101
void begin_for_step_prepare(Environment *_environment)
Definition begin_for.c:237
struct _CopperList CopperList
int label_exists_numeric(Environment *_environment, int _label)
void on_goto_number(Environment *_environment, int _number)
Emit ASM code for ... (of ON ... GOTO ...).
Definition on_goto.c:146
void shared(Environment *_environment)
Manage variable as "global".
Definition shared.c:88
void image_converter_asserts(Environment *_environment, int _width, int _height, int _offset_x, int _offset_y, int *_frame_width, int *_frame_height, int _modulo_x, int _modulo_y)
Variable * fp_tan(Environment *_environment, char *_angle)
Definition fp_tan.c:62
Variable * varptr(Environment *_environment, char *_identifier)
Emit code for function = VARPTR( ... ).
Definition varptr.c:84
Variable * read_end(Environment *_environment)
Emit code for READ END function.
Definition read_end.c:46
void variable_store_mt(Environment *_environment, char *_source, unsigned int _value)
Store a variable's value.
Variable * random_value(Environment *_environment, VariableType _type)
Emit ASM code for = RANDOM.
Definition random.c:41
void on_proc(Environment *_environment, char *_expression)
Emit ASM code for ON ... PROC ....
Definition on_proc.c:88
void parser_array_init_by(Environment *_environment, ArrayReference *_array_reference)
Variable * variable_string_substring(Environment *_environment, char *_string, char *_start, char *_end)
Emit code for = SUBSTRING( ..., ... [, ...] ).
void dojo_serial_get_response_payload(Environment *_environment, char *_data)
Definition dojo.c:98
void sprite_multicolor_var(Environment *_environment, char *_sprite)
Emit ASM code for SPRITE [expression] MULTICOLOR.
void copper_wait(Environment *_environment, int _line)
Emit code for BEGIN COPPER.
void home(Environment *_environment)
Emit code for HOME.
Definition home.c:70
void buffered_output(Environment *_environment, FILE *_stream)
void text_vscroll(Environment *_environment)
void resume_vars(Environment *_environment, char *_thread)
Emit code for RESUME ....
Definition resume.c:72
void tiles_at(Environment *_environment, int _address)
Emit ASM code for TILES AT [int]xx.
Definition tiles.c:60
void mmob(Environment *_environment, char *_sprite, char *_sx, char *_sy, char *_zx, char *_zy, char *_gr, char *_sp)
Emit code for MOVE ....
Definition mmob.c:79
void return_procedure(Environment *_environment, char *_value)
Emit code for RETURN ....
void msprite_update(Environment *_environment)
Emit code for SPRITE(...).
Variable * tileset_storage(Environment *_environment, char *_source_name, char *_target_name, int _mode, int _flags, int _transparent_color, int _background_color, int _bank_expansion)
Emit code for LOAD TILESERT(...).
void put_image(Environment *_environment, char *_image, char *_x1, char *_y1, char *_x2, char *_y2, char *_frame, char *_sequence, int _flags)
Emit ASM code for PUT IMAGE [image] AT [int],[int].
Definition put_image.c:53
void writing(Environment *_environment, char *_mode, char *_parts)
Emit code for WRITING.
Definition writing.c:48
void on_goto(Environment *_environment, char *_expression)
Emit ASM code for ON ... GOTO ....
Definition on_goto.c:79
char * address_displacement(Environment *_environment, char *_address, char *_displacement)
Constant * constant_find(Environment *_environment, char *_name)
void buffered_fprintf(Environment *_environment, FILE *_stream, const char *_format,...)
enum _AudioDeviceName AudioDeviceName
int system_call(Environment *_environment, char *_command)
Call an external executable.
float min_of_two(float _x, float _y)
void console_restore_vars(Environment *_environment, char *_number)
const char * strstrcase(const char *_x, const char *_y)
POBuffer po_buf_fgets(POBuffer buf, FILE *f)
Definition _optimizer.c:138
void variable_move_array1_type(Environment *_environment, char *_array, char *_index, char *_field, char *_value)
struct _CopperInstruction CopperInstruction
void variable_move_array_string(Environment *_environment, char *_array, char *_string)
Variable * hit_to(Environment *_environment, int _sprite)
Emit ASM code for = HIT([int]x).
Definition hit.c:57
void variable_move_type(Environment *_environment, char *_type, char *_field, char *_value)
void begin_for_to_prepare_mt(Environment *_environment)
Variable * variable_sub_const(Environment *_environment, char *_source, int _dest)
Make a differenze between a variable a constant, and return the difference of them.
void tilemap_disable(Environment *_environment)
Emit ASM implementation for TEXT DISABLE instruction.
void variable_on_memory_init(Environment *_environment, int _imported_too)
Definition _var.c:41
Variable * new_images(Environment *_environment, int _frames, int _width, int _height, int _mode)
Emit code for NEW IMAGE(...).
Definition new_images.c:49
void console_calculate(Environment *_environment)
Definition 6847.c:262
#define MAX_TILESETS
Definition ugbc.h:569
void begin_build(Environment *_environment)
Start building exe from assembly.
Definition _build.c:46
void mmove_memory_memory(Environment *_environment, char *_from, char *_to, char *_size)
Emit ASM code for MMOVE [expr] TO [expr] SIZE [expr].
Definition mmove.c:53
Variable * point(Environment *_environment, char *_x, char *_y)
Emit code for POINT(...).
Definition point.c:46
Variable * peekw_var(Environment *_environment, char *_location)
Definition peek.c:203
ImageDescriptor * image_descriptor_flip_x(Environment *_environment, ImageDescriptor *_source)
void every_ticks_call(Environment *_environment, char *_timing, char *_label, char *_timer)
Definition every_call.c:46
int file_get_size(Environment *_environment, char *_filename)
Variable * collision_to_vars(Environment *_environment, char *_sprite)
Emit ASM code for = COLLISION([expression]).
Definition collision.c:79
Bank * bank_find(Bank *_first, char *_name)
struct _TileData TileData
void on_scroll_call(Environment *_environment, int _x, int _y, char *_label)
Emit ASM code for ON SCROLL ... CALL ....
void dojo_get_response(Environment *_environment, char *_status, char *_address, char *_size)
Definition dojo.c:123
void charset_at(Environment *_environment, int _value)
Emit ASM implementation for BITMAP AT [int] instruction.
Definition charset_at.c:43
Variable * variable_string_flip(Environment *_environment, char *_string)
Emit code for = FLIP( ... ).
_Dialect
Type of dialects.
Definition ugbc.h:94
@ DI_TSB
Definition ugbc.h:98
@ DI_UGBASIC
Definition ugbc.h:96
@ DI_ATARI_BASIC
Definition ugbc.h:100
void linker_cleanup(Environment *_environment)
Emit tail of linker's configuration file lines.
Definition _linker.c:133
void cmove(Environment *_environment, char *_dx, char *_dy)
Emit code for CMOVE.
Definition cmove.c:100
void dojo_get_response_payload(Environment *_environment, char *_address)
Definition dojo.c:153
void begin_for_to_assign(Environment *_environment, char *_to)
Definition begin_for.c:216
struct _Procedure Procedure
int check_datatype_limits(VariableType _type, int _value)
void colormap_at(Environment *_environment, int _address)
Emit ASM implementation for COLORMAP AT [int] instruction.
Definition colormap_at.c:60
void print_buffer(Environment *_environment, char *_buffer, int _new_line, int _printable)
Emit code for PRINT... instruction.
void prepare_variable_storage(Environment *_environment, char *_name, Variable *_variable)
void exit_procedure(Environment *_environment)
Emit code for POP PROC / EXIT PROC.
Definition exit_proc.c:124
void sprite_compress_horizontal_var(Environment *_environment, char *_sprite)
Emit ASM code for SPRITE [int] COMPRESS HORIZONTAL.
void dojo_get_message_inplace(Environment *_environment, char *_port, char *_channel, char *_variable)
void sound_off(Environment *_environment, int _channels)
Emit ASM code for SOUND OFF.
Definition sound_off.c:54
Variable * fp_log(Environment *_environment, char *_value)
Definition fp_log.c:73
Variable * variable_store_buffer(Environment *_environment, char *_destination, unsigned char *_buffer, int _size, int _at)
Variable * variable_bit(Environment *_environment, char *_value, char *_position)
Emit code for HAS BIT / BIT(...).
void draw_tile_column(Environment *_environment, char *_tile, char *_x, char *_y1, char *_y2, char *_color)
Emit ASM code for DRAW TILE ROW [y], [x1] TO [x2], [color].
int yycolno
Definition ugbc.tab.c:133
int yyposno
Definition ugbc.tab.c:138