1#ifndef __UGBASICCOMPILER__
2#define __UGBASICCOMPILER__
63#define UGBASIC_VERSION "1.18"
66 #define PATH_SEPARATOR '\\'
67 #define PATH_SEPARATOR_AS_STRING "\\"
69 #define PATH_SEPARATOR '/'
70 #define PATH_SEPARATOR_AS_STRING "/"
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 ); \
80 #define TRACE2( s, p1, p2 ) { \
81 char temporary[MAX_TEMPORARY_STORAGE]; \
82 (void)sprintf( temporary, s, p1, p2 ); \
83 TRACE0( temporary ); \
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;
145#define BANK_TYPE_COUNT 6
563#define MAX_TEMPORARY_STORAGE 1024
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
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
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 )
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 ) )
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 )
604#define VT_OPTIMAL_SHIFT( s ) ( (s<=2)?(log2(s)):(log2(s)+1) )
606#define VT_MAX_BITWIDTH_TYPE( a, b ) \
608 ( ( a == VT_FLOAT ) || ( b == VT_FLOAT ) ) ? \
610 ( ( a == VT_NUMBER ) || ( b == VT_NUMBER ) ) ? \
612 ( VT_BITWIDTH( a ) > VT_BITWIDTH( b ) ) ? ( a ) : ( b ) \
615#define VT_MAX_FLOAT_BITWIDTH_TYPE( a, b ) \
616 ( ( VT_FLOAT_BITWIDTH( a ) > VT_FLOAT_BITWIDTH( b ) ) ? ( a ) : ( b ) )
618#define VT_SIGNED( t ) \
619 ( ( (t) == VT_SBYTE ) || ( (t) == VT_SWORD ) || ( (t) == VT_SDWORD ) || ( (t) == VT_POSITION ) || ( (t) == VT_FLOAT ) || ( (t) == VT_NUMBER ) )
621#define VT_UNSIGN( t ) \
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 ) \
633#define VT_SIGN( t ) \
634 ( ( ! VT_SIGNED( t ) ) ? \
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 ) \
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) )
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) )
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) )
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) )
663#define VT_VALUE( v, t, d ) ( ( v == t ) ? d : 0 )
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 ) \
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 ) \
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 ) + \
698#define VARIABLE_TYPE_COUNT 26
764#define MEMORY_AREA_DEFINE( _type, _start, _end ) \
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; \
777 while( last->next ) { \
780 last->next = memoryArea; \
782 _environment->memoryAreas = memoryArea; \
1355#define CONDITIONAL_TYPE_COUNT 5
1412#define LOOP_TYPE_COUNT 1
1516#define SCREEN_MODE_DEFINE( _id, _bitmap, _width, _height, _colors, _tile_width, _tile_height, _description ) \
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; \
1532 while( last->next ) { \
1533 last = last->next; \
1535 last->next = screenMode; \
1537 _environment->screenModes = screenMode; \
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);
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 ); \
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 ); \
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 ); \
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 ); \
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 ); \
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 ); \
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 ); \
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 ); \
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 ); \
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 ); \
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 ); \
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 ); \
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 ); \
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 ); \
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" );
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 );
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 );
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 );
3887#define CHECK_POWEROF2_INVALID_MULTIPLACTOR2( value ) \
3888 if ( log2(value) != (int)log2(value) ) { \
3889 CRITICAL_INVALID_MULTIPLICATOR2(value); \
3891#define CHECK_NOTZERO_DIVISION_BY_ZERO( value ) \
3892 if ( value == 0 ) { \
3893 CRITICAL_DIVISION_BY_ZERO(); \
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);
3913#define outline0n(n,s,r) \
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); \
3921 buffered_fputs(((Environment *)_environment), s,((Environment *)_environment)->asmFile); \
3923 buffered_fputs(((Environment *)_environment), "\n", ((Environment *)_environment)->asmFile); \
3924 if ( ! ((Environment *)_environment)->emptyProcedure ) { \
3925 ((Environment *)_environment)->producedAssemblyLines += assemblyLineIsAComment( s ) ? 0 : 1; \
3930#define outline1n(n,s,a,r) \
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); \
3938 buffered_fprintf(((Environment *)_environment), ((Environment *)_environment)->asmFile, s, a); \
3940 buffered_fputs(((Environment *)_environment), "\n", ((Environment *)_environment)->asmFile); \
3941 if ( ! ((Environment *)_environment)->emptyProcedure ) { \
3942 ((Environment *)_environment)->producedAssemblyLines += assemblyLineIsAComment( s ) ? 0 : 1; \
3947#define outline2n(n,s,a,b,r) \
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); \
3955 buffered_fprintf(((Environment *)_environment), ((Environment *)_environment)->asmFile, s, a, b); \
3957 buffered_fputs(((Environment *)_environment), "\n", ((Environment *)_environment)->asmFile); \
3958 if ( ! ((Environment *)_environment)->emptyProcedure ) { \
3959 ((Environment *)_environment)->producedAssemblyLines += assemblyLineIsAComment( s ) ? 0 : 1; \
3964#define outline3n(n,s,a,b,c,r) \
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); \
3972 buffered_fprintf(((Environment *)_environment), ((Environment *)_environment)->asmFile, s, a, b, c); \
3974 buffered_fputs(((Environment *)_environment), "\n", ((Environment *)_environment)->asmFile); \
3975 if ( ! ((Environment *)_environment)->emptyProcedure ) { \
3976 ((Environment *)_environment)->producedAssemblyLines += assemblyLineIsAComment( s ) ? 0 : 1; \
3981#define outline4n(n,s,a,b,c,d,r) \
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); \
3989 buffered_fprintf(((Environment *)_environment), ((Environment *)_environment)->asmFile, s, a, b, c, d); \
3991 buffered_fputs(((Environment *)_environment), "\n", ((Environment *)_environment)->asmFile); \
3992 if ( ! ((Environment *)_environment)->emptyProcedure ) { \
3993 ((Environment *)_environment)->producedAssemblyLines += assemblyLineIsAComment( s ) ? 0 : 1; \
3998#define outline5n(n,s,a,b,c,d,e,r) \
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); \
4006 buffered_fprintf(((Environment *)_environment), ((Environment *)_environment)->asmFile, s, a, b, c, d, e); \
4008 buffered_fputs(((Environment *)_environment), "\n", ((Environment *)_environment)->asmFile); \
4009 if ( ! ((Environment *)_environment)->emptyProcedure ) { \
4010 ((Environment *)_environment)->producedAssemblyLines += assemblyLineIsAComment( s ) ? 0 : 1; \
4015#define outline6n(n,s,a,b,c,d,e,f,r) \
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); \
4023 buffered_fprintf(((Environment *)_environment), ((Environment *)_environment)->asmFile, s, a, b, c, d, e, f); \
4025 buffered_fputs(((Environment *)_environment), "\n", ((Environment *)_environment)->asmFile); \
4026 if ( ! ((Environment *)_environment)->emptyProcedure ) { \
4027 ((Environment *)_environment)->producedAssemblyLines += assemblyLineIsAComment( s ) ? 0 : 1; \
4033#define cfgline0n(n,s,r) \
4036 for(outsi=0; outsi<n; ++outsi) \
4037 fputs("\t", ((Environment *)_environment)->configurationFile); \
4038 fputs(s,((Environment *)_environment)->configurationFile); \
4040 fputs("\n", ((Environment *)_environment)->configurationFile); \
4043#define cfgline1n(n,s,a,r) \
4046 for(outsi=0; outsi<n; ++outsi) \
4047 fputs("\t", ((Environment *)_environment)->configurationFile); \
4048 fprintf(((Environment *)_environment)->configurationFile, s, a); \
4050 fputs("\n", ((Environment *)_environment)->configurationFile); \
4053#define cfgline2n(n,s,a,b,r) \
4056 for(outsi=0; outsi<n; ++outsi) \
4057 fputs("\t", ((Environment *)_environment)->configurationFile); \
4058 fprintf(((Environment *)_environment)->configurationFile, s, a, b); \
4060 fputs("\n", ((Environment *)_environment)->configurationFile); \
4063#define cfgline3n(n,s,a,b,c,r) \
4066 for(outsi=0; outsi<n; ++outsi) \
4067 fputs("\t", ((Environment *)_environment)->configurationFile); \
4068 fprintf(((Environment *)_environment)->configurationFile, s, a, b, c); \
4070 fputs("\n", ((Environment *)_environment)->configurationFile); \
4073#define cfgline4n(n,s,a,b,c,d,r) \
4076 for(outsi=0; outsi<n; ++outsi) \
4077 fputs("\t", ((Environment *)_environment)->configurationFile); \
4078 fprintf(((Environment *)_environment)->configurationFile, s, a, b, c, d); \
4080 fputs("\n", ((Environment *)_environment)->configurationFile); \
4083#define cfgline5n(n,s,a,b,c,d,e,r) \
4086 for(outsi=0; outsi<n; ++outsi) \
4087 fputs("\t", ((Environment *)_environment)->configurationFile); \
4088 fprintf(((Environment *)_environment)->configurationFile, s, a, b, c, d, e); \
4090 fputs("\n", ((Environment *)_environment)->configurationFile); \
4093#define outfile0(f) \
4095 FILE * fh = fopen( f, "rt" ); \
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; \
4105 buffered_fputs(((Environment *)_environment), "\n", ((Environment *)_environment)->asmFile); \
4107 CRITICAL2("Unable to include ugbasic system file", f ); \
4114#define outembedded0(e) \
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" ); \
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 ) { \
4130 for( i=0; i<_environment->embedResult.current; ++i ) { \
4131 if ( _environment->embedResult.excluded[i] ) \
4134 if ( i>= _environment->embedResult.current ) { \
4135 if ( _environment->embedResult.lineCount ) { \
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; \
4143 strcat( parsed, line ); \
4144 strcat( parsed, "\x0a" ); \
4145 ((Environment *)_environment)->producedAssemblyLines += assemblyLineIsAComment( line ) ? 0 : 1; \
4149 line = strtok( NULL, "\x0a" ); \
4151 if ( _environment->embedResult.current > 0 ) { \
4152 CRITICAL_UNCLOSED_EMBEDDED_ESCAPE_SEQUENCE( #e ); \
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 ); \
4162#define outembeddeddef0(e) \
4164 int deferredIndex = 0; \
4166 for( deferredIndex = 0; deferredIndex < MAX_TEMPORARY_STORAGE; ++deferredIndex ) { \
4167 if ( !_environment->deferredEmbedded[deferredIndex] ) { \
4172 char * tmp = malloc( e##_len + 1 ); \
4173 memset( tmp, 0, e##_len + 1 ); \
4174 memcpy( tmp, e, e##_len ); \
4176 _environment->deferredEmbedded[deferredIndex] = tmp; \
4177 _environment->deferredEmbeddedSize[deferredIndex] = e##_len; \
4182#define adiline0(s) \
4183 if ( ((Environment *)_environment)->additionalInfoFile ) { \
4184 fprintf( ((Environment *)_environment)->additionalInfoFile, s ); \
4185 fprintf( ((Environment *)_environment)->additionalInfoFile, "\n" ); \
4187#define adiline1(s,a) \
4188 if ( ((Environment *)_environment)->additionalInfoFile ) { \
4189 fprintf( ((Environment *)_environment)->additionalInfoFile, s, a ); \
4190 fprintf( ((Environment *)_environment)->additionalInfoFile, "\n" ); \
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" ); \
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" ); \
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" ); \
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" ); \
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" ); \
4219#define adilinepalette(s,c,p) \
4220 if ( ((Environment *)_environment)->additionalInfoFile ) { \
4221 fprintf( ((Environment *)_environment)->additionalInfoFile, s, c ); \
4222 fprintf( ((Environment *)_environment)->additionalInfoFile, ":" ); \
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 ); \
4228 fprintf( ((Environment *)_environment)->additionalInfoFile, "\n" ); \
4231#define adilinebeginbitmap(s) \
4232 if ( ((Environment *)_environment)->additionalInfoFile ) { \
4233 fprintf( ((Environment *)_environment)->additionalInfoFile, "%s:", s ); \
4236#define adilinepixel(p) \
4237 if ( ((Environment *)_environment)->additionalInfoFile ) { \
4238 fprintf( ((Environment *)_environment)->additionalInfoFile, "%2.2x:", p ); \
4241#define adilineendbitmap() \
4242 if ( ((Environment *)_environment)->additionalInfoFile ) { \
4243 fprintf( ((Environment *)_environment)->additionalInfoFile, "\n" ); \
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)
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)
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" ); \
4294 cpu_label( _environment, #s "_after" ); \
4295 _environment->emptyProcedure = ignoreEmptyProcedure; \
4296 _environment->deployed.s = 1; \
4299 #define deploy_preferred(s,e) \
4300 _environment->deployed.s = 1; \
4302 #define deploy_deferred(s,e) \
4303 if ( ! _environment->deployed.s ) { \
4304 outembeddeddef0(e); \
4305 _environment->deployed.s = 1; \
4308 #define deploy_inplace(s,e) \
4309 if ( ! _environment->deployed.s ) { \
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; \
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" ); \
4327 cpu_label( _environment, #s "_after" ); \
4328 _environment->emptyProcedure = ignoreEmptyProcedure; \
4329 _environment->deployed.s = 1; \
4332 #define deploy_deferred_with_vars(s,e,v) \
4333 if ( ! _environment->deployed.s ) { \
4334 outembeddeddef0(e); \
4336 _environment->deployed.s = 1; \
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" ); \
4345 cpu_label( _environment, #s "_after" ); \
4346 _environment->emptyProcedure = ignoreEmptyProcedure; \
4347 _environment->deployed.embedded.s = 1; \
4350 #define deploy_deferred_embedded(s,e) \
4351 if ( ! _environment->deployed.embedded.s ) { \
4352 outembeddeddef0(e); \
4353 _environment->deployed.embedded.s = 1; \
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 ); \
4365 #define deploy_end(s) \
4366 cpu_label( _environment, #s "_after" ); \
4367 _environment->protothread = ignoreProtothread; \
4368 _environment->emptyProcedure = ignoreEmptyProcedure; \
4369 _environment->deployed.s = 1; \
4373 _environment->embeddedStats.s++; \
4374 if ( !_environment->embedded.s ) {
4376 #define no_inline(s) \
4377 if ( !_environment->embedded.s ) { \
4378 CRITICAL_UNABLE_TO_INLINE(#s); \
4380 #define no_embedded(s) \
4382 CRITICAL_UNABLE_TO_EMBED(#s); \
4385 #define embedded(s,e) \
4387 deploy_embedded(s,e) \
4392 #define parse_embedded(p, s) \
4393 if ( strcmp( p, #s ) == 0 ) { \
4394 _environment->embedded.s = 1; \
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" ); \
4406 cpu_label( _environment, #s "_after" ); \
4407 _environment->emptyProcedure = ignoreEmptyProcedure; \
4408 _environment->deployed.s = 1; \
4409 printf( " deployed.%s = 1\n", #s ); \
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 ); \
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 ); \
4425 #define deploy_inplace(s,e) \
4426 printf( "deploy_inplace(%s) %s:%d\n", #s, __FILE__, __LINE__ ); \
4427 if ( ! _environment->deployed.s ) { \
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 ); \
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" ); \
4448 cpu_label( _environment, #s "_after" ); \
4449 _environment->emptyProcedure = ignoreEmptyProcedure; \
4450 _environment->deployed.s = 1; \
4451 printf( " deployed.%s = 1\n", #s ); \
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); \
4459 _environment->deployed.s = 1; \
4460 printf( " deployed.%s = 1\n", #s ); \
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" ); \
4470 cpu_label( _environment, #s "_after" ); \
4471 _environment->emptyProcedure = ignoreEmptyProcedure; \
4472 _environment->deployed.embedded.s = 1; \
4473 printf( " deployed.%s = 1\n", #s ); \
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 ); \
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 );
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 ); \
4504 _environment->embeddedStats.s++; \
4505 if ( !_environment->embedded.s ) {
4507 #define no_inline(s) \
4508 if ( !_environment->embedded.s ) { \
4509 CRITICAL_UNABLE_TO_INLINE(#s); \
4511 #define no_embedded(s) \
4513 CRITICAL_UNABLE_TO_EMBED(#s); \
4516 #define embedded(s,e) \
4518 deploy_embedded(s,e) \
4523 #define parse_embedded(p, s) \
4524 if ( strcmp( p, #s ) == 0 ) { \
4525 _environment->embedded.s = 1; \
4530#define stats_embedded(s) \
4531 printf("%s:\t%d\t%s\t\n", #s, _environment->embeddedStats.s, _environment->embedded.s ? "embedded" : "inline" );
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
4543#define TILEMAP_NATIVE 0
4544#define BITMAP_NATIVE 1
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
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
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
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
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
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
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
4728#define IMF_NOTE( o, n ) ( ( o ) * IMF_NOTE_COUNT + ( n ) )
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
4741char *
strcopy(
char * _dest,
char * _source );
4743#define BUILD_CHECK_FILETYPE(_environment, _filetype) \
4744 if ( _environment->outputFileType != _filetype ) { \
4745 CRITICAL_UNSUPPORTED_OUTPUT_FILE_TYPE( OUTPUT_FILE_TYPE_AS_STRING[_filetype] ); \
4748#define BUILD_SAFE_REMOVE(_environment, filename) \
4749 system_remove_safe( _environment, filename );
4751#define BUILD_SAFE_MOVE( _environment, source, destination ) \
4752 system_move_safe( _environment, source, destination )
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" ); \
4770 sprintf(executableName, "%s", "cl65" ); \
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 ); \
4778 strcopy( listingFileName, "" ); \
4781#define BUILD_TOOLCHAIN_CC65_EXEC( _environment, target, executableName, listingFileName, additionalParameters ) \
4782 sprintf( commandLine, "\"%s\" %s -o \"%s\" %s -C \"%s\" \"%s\"", \
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"); \
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" ); \
4807 sprintf(executableName, "%s", "z88dk-z80asm" ); \
4810#define BUILD_TOOLCHAIN_Z88DK_GET_LISTING_FILE( _environment, listingFileName ) \
4811 (void) listingFileName; \
4812 if ( _environment->listingFileName ) { \
4813 sprintf( listingFileName, "-l -m -s -g" ); \
4815 strcopy( listingFileName, "-m -s -g" ); \
4818#define BUILD_TOOLCHAIN_Z88DK_EXEC( _environment, target, executableName, listingFileName, cpu ) \
4819 sprintf( commandLine, "\"%s\" -m=%s %s -D__%s__ -b \"%s\"", \
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"); \
4831 if ( _environment->listingFileName ) { \
4832 char * p = strdup( _environment->asmFileName ); \
4833 char * q = strchr( p, '.' ); \
4835 strcopy( q, ".lis" ); \
4837 BUILD_SAFE_MOVE( _environment, p, _environment->listingFileName ); \
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" ); \
4852 sprintf(executableName, "%s", "z88dk-appmake" ); \
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" ); \
4869 sprintf(executableName, "%s", "asm6809" ); \
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 ); \
4877 strcopy( listingFileName, "" ); \
4880#define BUILD_TOOLCHAIN_ASM6809EXEC( _environment, flag, startingAddress, executableName, listingFileName ) \
4881 sprintf( commandLine, "\"%s\" %s -o \"%s\" %s -e %d \"%s\"", \
4884 _environment->exeFileName, \
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"); \
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" ); \
4906 sprintf(executableName, "%s", "decb" ); \
4909#define BUILD_TOOLCHAIN_DECB( _environment, executableName, binaryFileName ) \
4910 sprintf( commandLine, "\"%s\" dskini \"%s\"", \
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"); \
4918 sprintf( commandLine, "\"%s\" copy -2 \"%s\" \"%s,%s\"", \
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"); \
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" ); \
4941 sprintf(executableName, "%s", "dir2atr" ); \
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" ); \
4957 sprintf(executableName, "%s", "cptodsk" ); \
4961#define BUILD_TOOLCHAIN_DIR2ATR( _environment, executableName, bootCodePath, contentPath, atrFileName, pipes ) \
4963 int pathSeparatorChanged = 0; \
4964 if ( contentPath[strlen(contentPath)-1] == PATH_SEPARATOR ) { \
4965 contentPath[strlen(contentPath)-1] = 0; \
4966 pathSeparatorChanged = 1; \
4968 sprintf( commandLine, "\"%s\" -S -p -B \"%s\" \"%s\" \"%s\" %s", \
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"); \
4980 if ( pathSeparatorChanged ) { \
4981 contentPath[strlen(contentPath)] = PATH_SEPARATOR; \
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" ); \
4997 sprintf(executableName, "%s", "as61860" ); \
5000#define BUILD_TOOLCHAIN_ASXV5PXX_EXEC( _environment, target, executableName ) \
5001 sprintf( commandLine, "\"%s\" -gloaxsff \"%s\"", \
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"); \
5010 if ( _environment->listingFileName ) { \
5011 char * p = strdup( _environment->asmFileName ); \
5012 char * q = strchr( p, '.' ); \
5014 strcopy( q, ".lst" ); \
5016 BUILD_SAFE_MOVE( _environment, p, _environment->listingFileName ); \
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" ); \
5031 sprintf(executableName, "%s", "aslink" ); \
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" ); \
5046 sprintf(executableName, "%s", "nasm" ); \
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 ); \
5054 strcopy( listingFileName, "" ); \
5057#define BUILD_TOOLCHAIN_NASM_EXEC( _environment, target, executableName, listingFileName, cpu ) \
5058 sprintf( commandLine, "\"%s\" -f bin \"%s\" -o \"%s\" %s", \
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"); \
5069 if ( _environment->listingFileName ) { \
5070 char * p = strdup( _environment->asmFileName ); \
5071 char * q = strchr( p, '.' ); \
5073 strcopy( q, ".lis" ); \
5075 BUILD_SAFE_MOVE( _environment, p, _environment->listingFileName ); \
5147#define FUNCTION_STUB( t ) Variable * result = variable_temporary( _environment, t, "(stub)" ); return result;
5170#define TMP_BUF tmp_buf(__FILE__, __LINE__)
5171#define TMP_BUF_CLR tmp_buf_clr(__FILE__)
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 );
5234void animation(
Environment * _environment,
char * _identifier,
char * _atlas,
char * _prefix,
char * _next );
5263void bar(
Environment * _environment,
char * _x0,
char * _y0,
char * _x1,
char * _y1,
char * _c,
int _preserve_color );
5303void bell(
Environment * _environment,
int _note,
int _duration,
int _channels );
5304void bell_vars(
Environment * _environment,
char * _note,
char * _duration,
char * _channels,
int _sync );
5309void blit_define(
Environment * _environment,
char * _name,
int _sop,
int _mop,
int _smop,
int _iop,
int _dop,
int _idop,
int _top );
5315void blit_image(
Environment * _environment,
char * _blit,
char * _x,
char * _y,
char * _frame,
char * _sequence,
int _flags );
5319void box(
Environment * _environment,
char * _x1,
char * _y1,
char * _x2,
char * _y2,
char * _c,
int _preserve_color );
5336void center(
Environment * _environment,
char * _string,
int _newline,
char * _width );
5339void char_at(
Environment * _environment,
char *_x,
char *_y,
char *_code,
char *_type,
char *_size );
5345void circle(
Environment * _environment,
char * _x,
char * _y,
char * _r,
char *_c,
int _preserve_color );
5349void clip(
Environment * _environment,
char * _x1,
char * _y1,
char * _x2,
char * _y2 );
5351void cls_box(
Environment * _environment,
char * _x1,
char * _y1,
char * _w,
char * _h );
5420void defdgr_vars(
Environment * _environment,
char * _character,
char * _b0,
char * _b1,
char * _b2,
char * _b3,
char * _b4,
char * _b5,
char * _b6,
char * _b7 );
5423void dload(
Environment * _environment,
char * _filename,
char * _offset,
char * _address,
char * _bank,
char * _size );
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 );
5432void dsave(
Environment * _environment,
char * _filename,
char * _offset,
char * _address,
char * _size );
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 );
5495void ellipse(
Environment * _environment,
char * _x,
char * _y,
char * _rx,
char * _ry,
char * _c,
int _preserve_color );
5516void envelope(
Environment * _environment,
char * _voice,
char * _attack,
char * _decay,
char * _sustain,
char * _release );
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 );
5547void fill(
Environment * _environment,
char * _x,
char * _y,
char * _w,
char * _h,
char * _char,
char * _color );
5594void get_image(
Environment * _environment,
char * _image,
char * _x1,
char * _y1,
char * _x2,
char * _y2,
char * _frame,
char * _sequence,
int _palette );
5608void gprint(
Environment * _environment,
char * _atlas,
char * _text,
char * _x,
char * _y );
5619void hires(
Environment * _environment,
char * _foreground,
char * _background );
5630Variable *
image_load(
Environment * _environment,
char * _filename,
char * _alias,
int _mode,
int _flags,
int _transparent_color,
int _background_color,
int _bank_expansion );
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 );
5639char *
image_extract_subimage(
Environment * _environment,
char * _source,
int _width,
int _height,
int _frame_width,
int _frame_height,
int _x,
int _y,
int _depth );
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 );
5653void insert(
Environment * _environment,
char * _string,
char * _x,
char * _y,
char * _w,
char * _h,
char * _color );
5656void inkb(
Environment * _environment,
char * _value,
char * _color1,
char * _color2 );
5669void jmove(
Environment * _environment,
char * _port,
char * _x,
char * _y,
char * _minx,
char * _maxx,
char * _miny,
char *_maxy,
char * _xstep,
char * _ystep );
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 );
5724void memclr(
Environment * _environment,
char * _address,
char * _size,
char * _value );
5726void memdef(
Environment * _environment,
char * _size,
char * _address,
char * _eaddress,
char * _bank );
5730void memor(
Environment * _environment,
char * _address,
char * _eaddress,
char * _bank );
5739void mmob(
Environment * _environment,
char * _sprite,
char * _sx,
char * _sy,
char * _zx,
char * _zy,
char * _gr,
char * _sp );
5743void move(
Environment * _environment,
char * _prefix,
char * _movement,
char * _x,
char * _y,
char * _animation );
5745void movement(
Environment * _environment,
char * _identifier,
char * _atlas,
char * _prefix );
5818void play(
Environment * _environment,
int _note,
int _duration,
int _channels );
5823void plot(
Environment * _environment,
char * _x,
char * _y,
char *_c,
int _preserve_color );
5835void print(
Environment * _environment,
char * _text,
int _new_line,
int _raw );
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 );
5883void rightw(
Environment * _environment,
char * _line,
char * _column,
char * _width,
char * _height );
5884void rightb(
Environment * _environment,
char * _line,
char * _column,
char * _width,
char * _height );
5888void rot(
Environment * _environment,
char * _angle,
char * _step );
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 );
5935void slice_image(
Environment * _environment,
char * _image,
char * _frame,
char * _sequence,
char * _destination );
5937void sound(
Environment * _environment,
int _freq,
int _duration,
int _channels );
6007void tilemap_enable(
Environment * _environment,
int _width,
int _height,
int _colors,
int _tile_width,
int _tile_height );
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 );
6041void upw(
Environment * _environment,
char * _line,
char * _column,
char * _width,
char * _height );
6042void upb(
Environment * _environment,
char * _line,
char * _column,
char * _width,
char * _height );
6214void wave(
Environment * _environment,
char * _voice,
char * _bits,
char * _pulse );
6234#if defined(__atari__)
6235 #define targetDescription "ATARI 400/800"
6236 #define defaultExtension "xex"
6237 #include "../src-generated/modules_atari.h"
6243#elif defined(__atarixl__)
6244 #define targetDescription "ATARI XL/XEGS"
6245 #define defaultExtension "xex"
6246 #include "../src-generated/modules_atarixl.h"
6252#elif defined(__c128__)
6253 #define targetDescription "Commodore 128 (MOS 8510 native)"
6254 #define defaultExtension "prg"
6255 #include "../src-generated/modules_c128.h"
6262#elif defined(__c128z__)
6263 #define targetDescription "Commodore 128 (ZILOG Z80 native)"
6264 #define defaultExtension "prg"
6265 #include "../src-generated/modules_c128z.h"
6270#elif defined(__c16__)
6271 #define targetDescription "Commodore 16"
6272 #define defaultExtension "prg"
6273 #include "../src-generated/modules_c16.h"
6277#elif defined(__c64__)
6278 #define targetDescription "Commodore 64"
6279 #define defaultExtension "prg"
6287#elif defined(__c64reu__)
6288 #define targetDescription "Commodore 64 + REU"
6289 #define defaultExtension "d64"
6290 #include "../src-generated/modules_c64reu.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"
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"
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"
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"
6333#elif defined(__coleco__)
6334 #define targetDescription "ColecoVision"
6335 #define defaultExtension "rom"
6336 #include "../src-generated/modules_coleco.h"
6341#elif defined(__cpc__)
6342 #define targetDescription "Amstrad CPC 664"
6343 #define defaultExtension "dsk"
6344 #include "../src-generated/modules_cpc.h"
6348#elif defined(__d32__)
6349 #define targetDescription "Dragon 32 (Motorola 6809)"
6350 #define defaultExtension "bin"
6351 #include "../src-generated/modules_d32.h"
6356#elif defined(__d32b__)
6357 #define targetDescription "Dragon 32 (Motorola 6309)"
6358 #define defaultExtension "bin"
6359 #include "../src-generated/modules_d32b.h"
6364#elif defined(__d64__)
6365 #define targetDescription "Dragon 64 (Motorola 6809)"
6366 #define defaultExtension "bin"
6367 #include "../src-generated/modules_d64.h"
6372#elif defined(__d64b__)
6373 #define targetDescription "Dragon 64 (Motorola 6309)"
6374 #define defaultExtension "bin"
6375 #include "../src-generated/modules_d64b.h"
6380#elif defined(__gb__)
6381 #define targetDescription "Gameboy"
6382 #define defaultExtension "gb"
6383 #include "../src-generated/modules_gb.h"
6386#elif defined(__mo5__)
6387 #define targetDescription "Thomson MO5"
6388 #define defaultExtension "k7"
6389 #include "../src-generated/modules_mo5.h"
6393#elif defined(__msx1__)
6394 #define targetDescription "MSX"
6395 #define defaultExtension "rom"
6396 #include "../src-generated/modules_msx1.h"
6401#elif defined(__pc128op__)
6402 #define targetDescription "PC128 Olivetti Prodest / Thomson MO6"
6403 #define defaultExtension "k7"
6404 #include "../src-generated/modules_pc128op.h"
6409#elif defined(__pc1403__)
6410 #define targetDescription "Sharp PC-1403"
6411 #define defaultExtension "ram"
6412 #include "../src-generated/modules_pc1403.h"
6415#elif defined(__pccga__)
6416 #define targetDescription "PC IBM (CGA)"
6417 #define defaultExtension "com"
6418 #include "../src-generated/modules_pccga.h"
6422#elif defined(__plus4__)
6423 #define targetDescription "Commodore PLUS/4"
6424 #define defaultExtension "prg"
6425 #include "../src-generated/modules_plus4.h"
6429#elif defined(__sc3000__)
6430 #define targetDescription "SEGA SC-3000"
6431 #define defaultExtension "rom"
6432 #include "../src-generated/modules_sc3000.h"
6437#elif defined(__sg1000__)
6438 #define targetDescription "SEGA SG-1000"
6439 #define defaultExtension "rom"
6440 #include "../src-generated/modules_sg1000.h"
6445#elif defined(__to8__)
6446 #define targetDescription "Thomson TO8"
6447 #define defaultExtension "k7"
6448 #include "../src-generated/modules_to8.h"
6452#elif defined(__vg5000__)
6453 #define targetDescription "Philips VG5000"
6454 #define defaultExtension "k7"
6455 #include "../src-generated/modules_vg5000.h"
6459#elif defined(__vic20__)
6460 #define targetDescription "Commodore VIC-20"
6461 #define defaultExtension "prg"
6462 #include "../src-generated/modules_vic20.h"
6467#elif defined(__vz200__)
6468 #define targetDescription "VTech Laser200/210/305/310"
6469 #define defaultExtension "vz"
6470 #include "../src-generated/modules_vz200.h"
6474#elif defined(__zx__)
6475 #define targetDescription "ZX Spectrum 48K"
6476 #define defaultExtension "tap"
6477 #include "../src-generated/modules_zx.h"
6482#ifdef CPU_BIG_ENDIAN
6483 #define ENDIANESSVALUE 1
6484 #define IMAGE_GET_WIDTH( buffer, offset, width ) \
6485 if ( IMAGE_WIDTH_SIZE == 1 ) { \
6486 width = buffer[offset+IMAGE_WIDTH_OFFSET]; \
6488 width = 256*buffer[offset+IMAGE_WIDTH_OFFSET] + buffer[offset+IMAGE_WIDTH_OFFSET+1]; \
6490 #define IMAGE_GET_HEIGHT( buffer, offset, height ) \
6491 if ( IMAGE_HEIGHT_SIZE == 1 ) { \
6492 height = buffer[offset+IMAGE_HEIGHT_OFFSET]; \
6494 height = 256*buffer[offset+IMAGE_HEIGHT_OFFSET] + buffer[offset+IMAGE_HEIGHT_OFFSET+1]; \
6497 #define ENDIANESSVALUE 0
6498 #define IMAGE_GET_WIDTH( buffer, offset, width ) \
6499 if ( IMAGE_WIDTH_SIZE == 1 ) { \
6500 width = buffer[offset+IMAGE_WIDTH_OFFSET]; \
6502 width = buffer[offset+IMAGE_WIDTH_OFFSET] + 256 * buffer[offset+IMAGE_WIDTH_OFFSET+1]; \
6504 #define IMAGE_GET_HEIGHT( buffer, offset, height ) \
6505 if ( IMAGE_HEIGHT_SIZE == 1 ) { \
6506 height = buffer[offset+IMAGE_HEIGHT_OFFSET]; \
6508 height = buffer[offset+IMAGE_HEIGHT_OFFSET] + 256 * buffer[offset+IMAGE_HEIGHT_OFFSET+1]; \
unsigned char MemoryBlock
int arrayIndexesDirectEach[MAX_ARRAY_DIMENSIONS]
char * arrayIndexesEach[MAX_ARRAY_DIMENSIONS]
struct _ImageDescriptor * frames
struct _ImageDescriptor * image
Structure of a single bank.
char * sources[MAX_TEMPORARY_STORAGE]
Structure of a single conditional jump.
struct _Conditional * next
Structure of a single constant.
StaticString * valueString
CopperOperation operation
struct _CopperInstruction * next
struct _CopperInstruction * first
struct _CopperList * next
int cpu_math_mul2_const_16bit_generated[16]
int cpu_math_div_nbit_to_nbit_const[32]
int cpu_math_mul2_const_8bit_generated[8]
int cpu_math_div_nbit_to_nbit[32]
int cpu_math_mul_nbit_to_nbit[32]
FloatTypePrecision precision
struct _DataDataSegment * next
struct _DataSegment * next
int fp_single_horner_step
int fp_single_mulu8_divpow2
int textEncodedAtGraphicRaw
char * values[MAX_TEMPORARY_STORAGE]
char * lines[MAX_TEMPORARY_STORAGE]
int excluded[MAX_NESTED_ARRAYS]
int cpu_move_8bit_with_offset2
int cpu_store_8bit_with_offset
int cpu_math_sub_16bit_with_8bit
int cpu_math_mul2_const_nbit
int cpu_complement2_16bit
int cpu_math_add_nbit_const
int cpu_store_8bit_with_offset2
int cpu_math_mul_16bit_to_32bit
int cpu_math_mul2_const_32bit
int cpu_complement2_32bit
int cpu_math_add_16bit_with_8bit
int cpu_compare_and_branch_8bit
int cpu_compare_and_branch_char_const
int cpu_compare_and_branch_8bit_const
int cpu_greater_than_32bit
int cpu_move_16bit_indirect2
int cpu_math_div2_const_nbit
int cpu_move_8bit_with_offset
int cpu_move_8bit_indirect_with_offset
int cpu_less_than_8bit_const
int cpu_math_div2_const_32bit
int cpu_math_double_32bit
int cpu_move_32bit_indirect
int cpu_less_than_nbit_const
int cpu_move_8bit_indirect2
int cpu_math_add_16bit_const
int cpu_math_div2_const_8bit
int cpu_math_complement_const_16bit
int cpu_greater_than_nbit
int cpu_bit_check_extended
int cpu_less_than_16bit_const
int cpu_convert_string_into_16bit
int cpu_compare_and_branch_16bit
int cpu_compare_and_branch_16bit_const
int cpu_move_8bit_indirect2_16bit
int cpu_math_add_8bit_const
int cpu_greater_than_memory_size
int cpu_greater_than_16bit
int cpu_greater_than_8bit
int cpu_math_add_16bit_with_16bit
int cpu_math_and_const_16bit
int cpu_less_than_32bit_const
int cpu_less_than_memory_size
int cpu_move_32bit_indirect2
int cpu_math_mul2_const_8bit
int cpu_greater_than_memory
int cpu_move_16bit_indirect
int cpu_math_mul_8bit_to_16bit
int cpu_math_double_16bit
int cpu_mem_move_direct_indirect_size
int cpu_move_8bit_indirect_with_offset2
int cpu_math_div_nbit_to_nbit
int cpu_math_complement_const_8bit
int cpu_move_8bit_indirect2_8bit
int cpu_math_div_32bit_to_16bit
int cpu_math_div2_const_16bit
int cpu_math_add_32bit_const
int cpu_compare_memory_size
int cpu_math_mul2_const_16bit
int cpu_move_16bit_indirect2_8bit
int cpu_mem_move_direct_size
int cpu_math_complement_const_32bit
int cpu_math_div_8bit_to_8bit
int cpu_compare_and_branch_32bit_const
int cpu_math_and_const_8bit
int cpu_move_8bit_indirect
int cpu_math_div_16bit_to_16bit
int cpu_math_and_const_32bit
Structure of compilation environment.
Variable * tempResidentVariables
int animationEaseInFrames
int currentSourceLineAnalyzed
Conditional * conditionals
char * bufferOutput[MAX_BUFFERED_OUTPUT]
char * soundDuration[MAX_TEMPORARY_STORAGE]
int deferredEmbeddedSize[MAX_TEMPORARY_STORAGE]
TileDescriptors * tilesets[MAX_TILESETS]
char * parametersEach[MAX_PARAMETERS]
int animationNextWithEaseIn
Variable * procedureVariables
int lastDefinedLabelIsNumeric
BankAccessOptimization bankAccessOptimization
int animationEaseOutFrames
char * arrayIndexesEach[MAX_NESTED_ARRAYS][MAX_ARRAY_DIMENSIONS]
int lastThreadIdentifierUsed
Bank * banks[BANK_TYPE_COUNT]
OptionParameterValue * optionParameters
JoystickConfig joystickConfig
int dojoOnVirtualizedFujiNet
int maxExpansionBankSize[MAX_RESIDENT_SHAREDS]
VariableType defaultVariableType
Console consoles[MAX_CONSOLES]
char * configurationFileName
int bufferOutputSize[MAX_BUFFERED_OUTPUT]
FILE * additionalInfoFile
OutputFileType outputFileType
RgbConverterFunction currentRgbConverterFunction
Variable * tempVariables[MAX_PROCEDURES]
int atLeastOneSoundNoteDurationSymbolic
FileStorage * currentFileStorage
DataSegment * dataSegment
FILE * debuggerLabelsFile
char * debuggerLabelsFileName
int returnsAsmioEach[MAX_PARAMETERS]
VariableType parametersTypeEach[MAX_PARAMETERS]
int tenLinerRulesEnforced
int verticalOverlapRequired
int peepholeOptimizationLimit
int animationEaseOutDelay
NumberConfig numberConfig
int animationPreserveBackground
ConfigureParameters configureParameters
int soundNoteValue[MAX_TEMPORARY_STORAGE]
int lastSoundNoteDuration
char * threadIdentifier[MAX_TEMPORARY_STORAGE]
Constant * currentFieldsValues
MultiplexingSpriteConfig multiplexingSpriteConfig
int arrayDimensionsEach[MAX_ARRAY_DIMENSIONS]
int parametersValueEach[MAX_PARAMETERS]
int graphicsAtariBasicEnabled
char * additionalInfoFileName
int producedAssemblyLines
Pattern * globalVariablePatterns
ProtothreadConfig protothreadConfig
int lastDefinedLabelNumeric
int arrayIndexes[MAX_NESTED_ARRAYS]
char * soundNote[MAX_TEMPORARY_STORAGE]
ArrayReference * travelYAR
int arrayIndexesDirectEach[MAX_NESTED_ARRAYS][MAX_ARRAY_DIMENSIONS]
int previousProducedAssemblyLines
KeyboardConfig keyboardConfig
int residentDetectionEnabled
TileDescriptors * descriptors
GammaCorrection gammaCorrection
int horizontalOverlapRequired
VariableType returnsTypeEach[MAX_PARAMETERS]
int dataLastAbsoluteAddress
VariableType dataDataType
char * deferredEmbedded[MAX_TEMPORARY_STORAGE]
int lmarginAtariBasicEnabled
int parametersAsmioEach[MAX_PARAMETERS]
AnimationType animationType
char * returnsEach[MAX_PARAMETERS]
CpuOptimization cpuOptimization
int soundDurationValue[MAX_TEMPORARY_STORAGE]
ArrayReference * travelXAR
VestigialConfig vestigialConfig
Structure of a single file inside a storage.
struct _Variable * variable
struct _FileStorage * next
FloatTypePrecision precision
struct _ImageDescriptor * next
Structure of a single label.
struct _LoadedFile * next
Structure of a single loop.
char * parameters[MAX_TEMPORARY_STORAGE]
char * lines[MAX_TEMPORARY_STORAGE]
struct _MemoryArea * next
struct _Offsetting * next
OffsettingVariable * variables
struct _Variable * variable
struct _OffsettingVariable * next
Structure of a single (option) setting.
struct _OptionParameterValue * next
HardwareParameterName parameter
struct _POVariable * next
char * parametersEach[MAX_PARAMETERS]
int returnsAsmioEach[MAX_PARAMETERS]
VariableType parametersTypeEach[MAX_PARAMETERS]
int parametersValueEach[MAX_PARAMETERS]
VariableType returnsTypeEach[MAX_PARAMETERS]
int parametersAsmioEach[MAX_PARAMETERS]
char * returnsEach[MAX_PARAMETERS]
Structure to store color components (red, green and blue).
unsigned char hardwareIndex
struct _ScreenMode * next
Structure of a single (static) string.
struct _StaticString * next
Structure of a single storage.
int frames[MAX_FRAMES_PER_STRIP]
TileDescriptor * descriptor[512]
Structure of a single variable.
unsigned char * reflected
unsigned char * valueBuffer
Offsetting * offsettingFrames
struct _Variable * tileset
FloatTypePrecision precision
StaticString * valueString
struct _Variable * origin
Offsetting * offsettingSequences
TsxTileset * originalTileset
FloatTypePrecision arrayPrecision
int arrayDimensionsEach[MAX_ARRAY_DIMENSIONS]
int initializedByConstant
RGBi originalPalette[MAX_PALETTE]
Constant * arrayInitialization
char rchack_falling_balls_1163
char rchack_4gravity_1163
char rchack_pick_the_star_1163
char rchack_4gravity_1164
char doubleBufferSelected
char rchack_ccarrots_1163
struct _TsxTileset TsxTileset
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] ).
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.
void animate_semivars(Environment *_environment, char *_prefix, char *_anim, char *_x, char *_y)
Emit code for ANIMATE ....
Variable * in_var(Environment *_environment, char *_port)
Emit ASM code for IN.
void target_finalization(Environment *_environment)
void dojo_serial_init(Environment *_environment)
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.
void text_tab(Environment *_environment)
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)
struct _Resource Resource
void show_usage_and_exit(int _argc, char *_argv[])
Show usage and exit.
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 ....
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)
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].
size_t buffered_fwrite(Environment *_environment, void *_data, size_t _size, size_t _count, FILE *_stream)
DataSegment * data_segment_find_numeric(Environment *_environment, int _number)
#define BANK_TYPE_COUNT
Maximum number of bank types.
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)
void lbottom(Environment *_environment)
Emit code for HOME.
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.
void char_at(Environment *_environment, char *_x, char *_y, char *_code, char *_type, char *_size)
Emit code for CENTRE ....
void slow(Environment *_environment)
Emit ASM code for SLOW.
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)
@ OUTPUT_FILE_TYPE_K7_NEW
@ OUTPUT_FILE_TYPE_K7_ORIGINAL
@ OUTPUT_FILE_TYPE_SDDRIVE
ScreenMode * find_screen_mode_by_id(Environment *_environment, int _id)
void global(Environment *_environment)
Manage variable as "global".
int tile_allocate(TileDescriptors *_tiles, char *_data)
void text_text(Environment *_environment, char *_text, int _raw)
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.
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)
void begin_for_from_mt(Environment *_environment, char *_index, char *_from, char *_to, char *_step)
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 ....
Variable * get_cmove_direct(Environment *_environment, int _x, int _y)
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(...).
DataSegment * data_segment_define_or_retrieve_numeric(Environment *_environment, int _number)
void dojo_serial_get_response_size(Environment *_environment, char *_status, char *_size)
void every_ticks_gosub(Environment *_environment, char *_timing, char *_label, char *_timer)
Emit ASM code for EVERY ... TICKS GOSUB ....
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 ....
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.
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)
void bank_write_vars(Environment *_environment, char *_bank, char *_address1, char *_address2, char *_size)
Emit ASM code for instruction BANK WRITE ....
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[.
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.
Variable * respawn_procedure(Environment *_environment, char *_name)
Emit code for SPAWN ....
Variable * variable_string_right(Environment *_environment, char *_string, char *_position)
Emit code for = LEFT( ..., ... ).
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 ....
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].
Variable * inkey(Environment *_environment)
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)
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)
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.
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)
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
Variable * screen_tiles_get_height(Environment *_environment)
Variable * key_pressed_var(Environment *_environment, char *_scancode)
void dojo_serial_put_request(Environment *_environment, int _command, char *_param1, char *_param2, char *_address, char *_size, char *_result)
int banks_any_used(Environment *_environment)
void dojo_get_response_payloadd(Environment *_environment, char *_data)
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
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)
void text_newline(Environment *_environment)
Variable * serialize(Environment *_environment, char *_data, char *_key)
Emit code for SERIALIZE.
void allow(Environment *_environment)
Emit code for YIELD.
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)
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)
void spc(Environment *_environment, char *_spaces)
void circle(Environment *_environment, char *_x, char *_y, char *_r, char *_c, int _preserve_color)
Emit code for CIRCLE command.
struct _ArrayReference ArrayReference
Variable * dojo_ping(Environment *_environment, char *_param1, char *_param2)
Variable * scancode(Environment *_environment)
void on_proc_index(Environment *_environment, char *_label)
Emit ASM code for ... (of ON ... PROC ...).
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 ....
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)
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.
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.
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].
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 ....
char * image_roll_y_down(Environment *_environment, char *_source, int _width, int _height)
void yield(Environment *_environment)
Emit code for YIELD.
void exit_proc_if(Environment *_environment, char *_expression, char *_value)
Emit ASM code for EXIT PROC IF.
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,...)
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)
struct _TileDescriptors TileDescriptors
void target_initialization(Environment *_environment)
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 ....
Variable * variable_sr_const(Environment *_environment, char *_source, int _bits)
int variable_exists(Environment *_environment, char *_name)
void target_prepare_finalization(Environment *_environment)
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$(...,...).
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.
Variable * range(Environment *_environment, char *_expression, char *_min, char *_max)
Emit code for READ instruction.
int define_audio_target_check(Environment *_environment, int _value)
Variable * absolute(Environment *_environment, char *_value)
Return the absolute value of a variable.
int is_do_loop(Environment *_environment)
Emit ASM code for ... LOOP.
Variable * peekd_var(Environment *_environment, char *_location)
void dojo_init(Environment *_environment)
DataSegment * data_segment_define(Environment *_environment, char *_name)
void set_timer(Environment *_environment, char *_value)
Emit code for TI =.
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)
void sys(Environment *_environment, int _address)
Emit code for SYS / EXEC ... command.
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)
void color_tsb(Environment *_environment, char *_border, char *_background, char *_cursor)
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)
void bottom(Environment *_environment)
Emit code for HOME.
Variable * joydir(Environment *_environment, int _port)
void case_equals_var(Environment *_environment, char *_value)
Emit ASM code for CASE ....
void halt(Environment *_environment)
Emit ASM code for HALT.
void wait_while(Environment *_environment)
Emit code for WAIT WHILE ....
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)
Variable * key_state_var(Environment *_environment, char *_scancode)
_MemoryAreaType
Enum for memory area type.
Variable * fp_cos(Environment *_environment, char *_angle)
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 ....
Variable * variable_move_from_array1_type(Environment *_environment, char *_array, char *_index, char *_field)
#define MAX_NESTED_ARRAYS
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)
void end_if_then(Environment *_environment)
Emit ASM code for ENDIF.
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)
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 ....
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.
void dojo_fujinet_put_requestds(Environment *_environment, int _command, char *_param1, char *_param2, char *_data, int _size, char *_result)
#define MAX_RESIDENT_SHAREDS
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)
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)
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.
void end_repeat(Environment *_environment)
Emit ASM code for ... UNTIL [expression].
void dojo_fujinet_begin(Environment *_environment)
void slice_image(Environment *_environment, char *_image, char *_frame, char *_sequence, char *_destination)
void charset_at_var(Environment *_environment, char *_value)
Emit ASM implementation for BITMAP AT [expression] instruction.
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)
Variable * screen_var(Environment *_environment, char *_x, char *_y, int _as_string)
#define MAX_ARRAY_DIMENSIONS
_ConditionalType
Types of conditional jumps supported.
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)
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]).
void volume_off(Environment *_environment, int _channels)
Emit ASM code for VOLUME OFF.
void wait_cycles(Environment *_environment, int _timing, int _parallel)
Emit ASM code for WAIT # [integer] CYCLES.
void console(Environment *_environment, int _x1, int _x2, int _x3, int _x4)
Emit code for CONSOLE.
void dojo_put_request(Environment *_environment, int _command, char *_param1, char *_param2, char *_address, char *_size, char *_result)
void boom_var(Environment *_environment, char *_duration, char *_channels)
Emit ASM code for BOOM ....
void freeze_vars(Environment *_environment, char *_prefix)
Emit code for FREEZE ....
Variable * new_image(Environment *_environment, int _width, int _height, int _mode)
Emit code for NEW IMAGE(...).
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 ....
Variable * variable_array_type(Environment *_environment, char *_name, VariableType _type)
Variable * asciicode(Environment *_environment)
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)
void vars_emit_constant_integer(Environment *_environment, char *_name, int _value)
Variable * rnd0(Environment *_environment)
Return a random value.
POVariable * po_var_register(char *_name)
enum _ConditionalType ConditionalType
Types of conditional jumps supported.
Variable * strig_vars(Environment *_environment, char *_port)
POBuffer po_buf_new(int size)
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.
void raster_at_var(Environment *_environment, char *_label, char *_position)
Emit ASM code for RASTER AT [expression] WITH label.
Variable * screen_page(Environment *_environment)
Emit code for SCREEN SWAP.
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].
POBuffer po_buf_printf(POBuffer buf, const char *fmt,...)
int po_buf_strcmp(POBuffer _s, POBuffer _t)
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)
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 ....
void music_var(Environment *_environment, char *_music, int _loop, int _music_type)
Emit ASM code for MUSIC ....
void data_string(Environment *_environment, char *_value)
Emit code for DATA instruction (string values).
void begin_compilation(Environment *_environment)
enum _PeepHoleOptimizationKind PeepHoleOptimizationKind
Variable * fp_sin(Environment *_environment, char *_angle)
void bank_read_vars_bank_direct_size(Environment *_environment, int _bank, char *_address1, char *_address2, int _size)
void envelope(Environment *_environment, char *_voice, char *_attack, char *_decay, char *_sustain, char *_release)
struct _POVariable POVariable
void variable_xor_inplace(Environment *_environment, char *_source, int _dest)
void variable_cleanup(Environment *_Environment)
Emit source and configuration lines for variables.
Variable * get_pen(Environment *_environment, char *_color)
Emit code for the PEN$(...).
Variable * keyshift(Environment *_environment)
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.
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)
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 ....
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)
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].
void begin_for(Environment *_environment, char *_index, char *_from, char *_to)
void chain(Environment *_environment, char *_filename)
Emit code for DLOAD(...).
void pen(Environment *_environment, char *_color)
Emit code for PEN ... command.
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)
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.
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].
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)
struct _BankAccessOptimization BankAccessOptimization
void text_set_tab(Environment *_environment, char *_net_tab)
Emit code for SET TAB ....
void graphic(Environment *_environment)
Emit ASM implementation for GRAPHIC instruction.
void sbpen_set(Environment *_environment, int _index, char *_color)
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.
Variable * x_text_get(Environment *_environment, char *_x)
Return the graphic abscissa for the given text abscissa.
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 ...,....
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)
POBuffer po_buf_cpy(POBuffer buf, char *string)
Variable * rnd1(Environment *_environment)
Variable * sprite_init(Environment *_environment, char *_image, char *_sprite, int _flags)
Emit code for SPRITE(...).
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.
Variable * variable_store_string(Environment *_environment, char *_source, char *_string)
Store a string to a variable.
void mempos(Environment *_environment, char *_address, char *_bank)
int frames(Environment *_environment, char *_image)
Emit code for FRAMES(...).
void sprite_enable(Environment *_environment, int _sprite)
Emit ASM code for SPRITE [int] ENABLE.
void reset(Environment *_environment)
Variable * variable_string_chr(Environment *_environment, char *_ascii)
Emit code for = CHR( ... ).
void fast(Environment *_environment)
Emit ASM code for FAST.
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 ....
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)
void blit_define_begin_compound(Environment *_environment, char *_name)
struct _POBuffer * POBuffer
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 ....
void begin_while_condition(Environment *_environment, char *_expression)
Variable * spen(Environment *_environment)
Emit ASM code for = SPEN().
int(* RgbConverterFunction)(int, int, int)
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.
Variable * variable_move_naked(Environment *_environment, char *_source, char *_dest)
Store the value of a variable inside another variable without conversion.
Variable * fujinet_set_channel_mode_var(Environment *_environment, char *_mode)
void vhcenter(Environment *_environment, char *_string, int _newline, char *_width)
Emit code for CENTRE ....
Variable * screen_tiles_get_width(Environment *_environment)
Variable * key_state(Environment *_environment, int _scancode)
void begin_for_from_assign(Environment *_environment, char *_from)
void sprite_at(Environment *_environment, int _sprite, int _x, int _y)
Emit ASM code for SPRITE [int] AT ([int],[int]).
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)
void if_then(Environment *_environment, char *_expression)
Emit ASM code for IF ... THEN ....
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.
void music_pause(Environment *_environment)
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)
void variable_increment_array(Environment *_environment, char *_source)
struct _Environment Environment
Structure of compilation environment.
void const_emit(Environment *_environment, char *_name)
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.
Variable * banks_get_address_var(Environment *_environment, char *_bank)
void tmp_buf_clr(void *key1)
void unfreeze_vars(Environment *_environment, char *_prefix)
Emit code for FREEZE ....
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.
void environment_setup_10liner(Environment *_environment)
void dojo_serial_get_response0(Environment *_environment, char *_status)
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)
void gr_locate(Environment *_environment, char *_x, char *_y)
Emit code for GR LOCATE command.
void dojo_put_request0(Environment *_environment, int _command, char *_param1, char *_param2, char *_result)
Variable * variable_mod(Environment *_environment, char *_source, char *_destination)
Variable * joydir_semivars(Environment *_environment, char *_port)
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.
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.
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 ....
void wait_vbl(Environment *_environment, char *_raster_line)
Emit ASM code for WAIT VBL/b>.
Variable * tile_load(Environment *_environment, char *_filename, int _flags, char *_tileset, int _index)
Emit code for LOAD TILE(...).
void dojo_get_response0(Environment *_environment, char *_status)
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.
void put_image_vars_flags(Environment *_environment, char *_image, char *_x1, char *_y1, char *_x2, char *_y2, char *_frame, char *_sequence, int _flags)
void paint_vars(Environment *_environment, char *_x, char *_y, char *_c, char *_b)
Emit ASM code for PAIN.
Variable * get_ticks_per_second(Environment *_environment)
Emit code for TAB$.
Variable * text_get_ycurs(Environment *_environment)
_Compression
Type of compression.
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 ....
struct _FontConfig FontConfig
void bank_set_var(Environment *_environment, char *_bank)
Emit ASM code for instruction BANK ....
void put_key(Environment *_environment, char *_string)
void next_raster(Environment *_environment)
Emit ASM code for NEXT RASTER.
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.
void proc(Environment *_environment, char *_label)
Emit ASM code for PROC.
Variable * variable_import(Environment *_environment, char *_name, VariableType _type, int _size_or_value)
void forbid(Environment *_environment)
Emit code for YIELD.
char * unescape_string(Environment *_environment, char *_value, int _printing, int *_final_size)
Variable * new_music(Environment *_environment, int _size)
Emit code for NEW IMAGE(...).
void charset_lowercase(Environment *_environment)
_GammaCorrection
Gamma correction type (for some palettes).
void environment_parse_command_line(Environment *_environment, int _argc, char *_argv[])
Parse command line parameters.
void memload(Environment *_environment)
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.
void charset_uppercase(Environment *_environment)
void wave(Environment *_environment, char *_voice, char *_bits, char *_pulse)
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.
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.
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.
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)
Variable * y_text_get(Environment *_environment, char *_y)
Return the text ordinate for the given graphic ordinate.
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.
void poked_var(Environment *_environment, char *_address, char *_value)
void dojo_serial_put_request0(Environment *_environment, int _command, char *_param1, char *_param2, char *_result)
void linker_setup(Environment *_environment)
Emit tail of linker's configuration file lines.
void flash(Environment *_environment, char *_index, char *_register)
Emit code for FLASH.
void field_type(Environment *_environment, char *_name, VariableType _datatype)
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)
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)
int variable_delete(Environment *_environment, char *_name)
Constant * constant_create(Environment *_environment, char *_name)
void target_linkage(Environment *_environment)
Convert C64's assembly to executable.
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)
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 ....
void animation(Environment *_environment, char *_identifier, char *_atlas, char *_prefix, char *_next)
Emit code for ANIMATION ....
void wait_while_condition(Environment *_environment, char *_condition)
void console_restore(Environment *_environment, int _number)
Emit code for CONSOLE.
void music_seek_var(Environment *_environment, char *_position)
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(...).
void color_vars(Environment *_environment, char *_index, char *_shade)
Emit ASM code for instruction COLOR [expression], [expression].
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 ...).
void gameloop_cleanup(Environment *_environment)
Emit source and configuration lines for game loops.
void end_for_identifier(Environment *_environment, char *_identifier)
Emit ASM code for ... NEXT.
void data_type(Environment *_environment)
#define MAX_BUFFERED_OUTPUT
struct _NumberConfig NumberConfig
void add_complex_type(Environment *_environment, char *_variable, char *_field, int _expression, int _limit_lower, int _limit_upper, int _clamp)
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.
void rgbi_move(RGBi *_source, RGBi *_destination)
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)
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].
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)
void variable_move_array_type(Environment *_environment, char *_array, char *_field, char *_value)
Variable * scanshift(Environment *_environment)
void bar(Environment *_environment, char *_x0, char *_y0, char *_x1, char *_y1, char *_c, int _preserve_color)
Emit ASM code to implement BAR command.
Variable * fujinet_write(Environment *_environment, char *_value)
void return_label(Environment *_environment)
Emit ASM code for RETURN.
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)
void volume_vars(Environment *_environment, char *_volume, char *_channels)
Emit ASM code for VOLUME ....
void console_init(Environment *_environment)
void screen_rows(Environment *_environment, int _rows)
Emit ASM code for SCREEN ROWS [integer].
int banks_get_default_resident(Environment *_environment, int _bank)
Variable * encrypt(Environment *_environment, char *_data, char *_key)
Emit code for ENCRYPT.
void dojo_partial(Environment *_environment)
void end(Environment *_environment)
Emit ASM code for END.
void poke_var(Environment *_environment, char *_address, char *_value)
Emit ASM code for POKE.
void dojo_put_requestd(Environment *_environment, int _command, char *_param1, char *_param2, char *_data, char *_size, char *_result)
void end_for(Environment *_environment)
Variable * key_pressed(Environment *_environment, int _scancode)
void environment_setup_embedded(Environment *_environment)
void variable_global(Environment *_environment, char *_pattern)
Variable * get_cmove(Environment *_environment, char *_x, char *_y)
Emit code for = CMOVE(...,...).
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.
void bank_cleanup(Environment *_environment)
Emit source and configuration lines for banks.
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 ....
Variable * rnd(Environment *_environment, char *_value)
Return a random value.
void read_data(Environment *_environment, char *_variable, int _safe)
Emit code for READ instruction.
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(...).
void screen_swap(Environment *_environment)
Emit code for SCREEN SWAP.
void label_define_named(Environment *_environment, char *_label)
void cls(Environment *_environment, char *_paper)
Emit code for CLS.
void begin_while(Environment *_environment)
Emit ASM code for WHILE ....
void console_vars(Environment *_environment, char *_x1, char *_x2, char *_x3, char *_x4)
void on_gosub_number(Environment *_environment, int _number)
Emit ASM code for ... (of ON ... GOSUB ...).
void fade_in(Environment *_environment, char *_period)
Emit code for FADE.
Variable * screen_get_height(Environment *_environment)
Variable * sign(Environment *_environment, char *_value)
Return the sign of a variable.
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)
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 ....
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)
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)
void rightb(Environment *_environment, char *_line, char *_column, char *_width, char *_height)
Emit code for RIGHTB ....
void generate_cgoto_address_table(Environment *_environment)
void bank_read_vars_direct_size(Environment *_environment, char *_bank, char *_address1, char *_address2, int _size)
void mmove_memory_video(Environment *_environment, char *_from, char *_to, char *_size)
Emit ASM code for MMOVE {VIDEO} [expr] TO {VIDEO} [expr] SIZE [expr].
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().
void dsave(Environment *_environment, char *_filename, char *_offset, char *_address, char *_size)
Emit code for DLOAD(...).
void wait_until_condition(Environment *_environment, char *_condition)
Variable * bank_get(Environment *_environment)
Emit ASM code for instruction = BANK( ).
void cgoto(Environment *_environment, char *_expression)
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.
POVariable * po_var_lookup(char *_name)
void data_floating(Environment *_environment, double _value)
Emit code for DATA instruction (float values).
Variable * get_timer(Environment *_environment)
Emit code for = TI.
void case_equals_label(Environment *_environment)
void dojo_get_responsed(Environment *_environment, char *_status, char *_data, char *_size)
void rightw(Environment *_environment, char *_line, char *_column, char *_width, char *_height)
Emit code for RIGHTW ....
void hires(Environment *_environment, char *_foreground, char *_background)
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(...).
void begin_loop(Environment *_environment, int _do)
Emit ASM code for DO ....
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].
void begin_type(Environment *_environment, char *_name)
Emit code for STORAGE ... ENDSTORAGE.
void music_resume(Environment *_environment)
Variable * image_ref(Environment *_environment, char *_image)
void console_calculate_vars(Environment *_environment)
struct _Loop Loop
Structure of a single loop.
void play_off(Environment *_environment, int _channels)
Emit ASM code for PLAY OFF.
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 ....
int po_buf_is_hex(POBuffer _s)
Variable * text_get_xcurs(Environment *_environment)
void fade_out(Environment *_environment, char *_period)
Emit code for FADE.
void sys_var(Environment *_environment, char *_address)
void shell_injection(Environment *_environment)
void bank_write_vars_bank_direct_size(Environment *_environment, char *_address1, int _bank, char *_address2, int _size)
Variable * clear_key(Environment *_environment)
void gprint(Environment *_environment, char *_atlas, char *_text, char *_x, char *_y)
Emit code for GPRINT... instruction.
void cmove_direct(Environment *_environment, int _dx, int _dy)
Variable * image_load_from_buffer(Environment *_environment, char *_buffer, int _buffer_size)
Emit code for (IMAGE)#[...].
void run(Environment *_environment)
Emit code for RUN.
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].
void use_tileset(Environment *_environment, char *_tileset)
Emit code for USE TILESET xxx.
void vars_emit_constants(Environment *_environment)
void end_procedure(Environment *_environment, char *_value)
Emit code for END PROC.
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)
void point_at(Environment *_environment, int _x, int _y)
Emit ASM code for POINT AT ([int],[int]).
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)
void parser_array_index_numeric(Environment *_environment, int _index)
enum _HardwareName HardwareName
void play(Environment *_environment, int _note, int _duration, int _channels)
Emit ASM code for PLAY ....
Variable * new_sequence(Environment *_environment, int _sequences, int _frames, int _width, int _height, int _mode)
Emit code for NEW SEQUENCE(...).
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)
char * file_read_csv(Environment *_Environment, char *_filename, VariableType _type, int *_size, int *_count)
StaticString * string_reserve(Environment *_environment, char *_value)
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 ...).
void ink(Environment *_environment, char *_expression)
Emit code for INK ... command.
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].
int image_size(Environment *_environment, int _width, int _height)
Variable * variable_add(Environment *_environment, char *_source, char *_dest)
Add two variable and return the sum of them.
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(...).
void fujinet_json_query(Environment *_environment, char *_query)
void scroll(Environment *_environment, int _dx, int _dy)
void stop_movement(Environment *_environment, char *_prefix)
Emit code for STOP ....
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).
void color_border(Environment *_environment, int _border_color)
Emit ASM code for instruction COLOR BORDER [int]x.
_BankType
Type of memory banks.
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 ...).
Variable * bank_get_address(Environment *_environment, int _bank)
Emit ASM code for instruction = BANK ADDRESS( ).
void dojo_end(Environment *_environment)
void wait_key(Environment *_environment, int _release)
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)
Variable * xpen(Environment *_environment)
Emit ASM code for = XPEN().
void memclr(Environment *_environment, char *_address, char *_size, char *_value)
void sys_call(Environment *_environment, int _address)
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).
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 ....
void boom(Environment *_environment, int _duration, int _channels)
Emit ASM code for BOOM ....
void bank_read_vars_bank_direct_size_vars(Environment *_environment, int _bank, char *_address1, char *_address2, int _size)
void variable_move_from_array_type_inplace(Environment *_environment, char *_array, char *_field, char *_value)
Variable * strig(Environment *_environment, int _port)
Variable * tileset_of_vars(Environment *_environment, char *_tilemap)
POBuffer po_buf_vprintf(POBuffer buf, const char *fmt, va_list ap)
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.
void restore_label(Environment *_environment, char *_label)
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.
void bank_read_vars(Environment *_environment, char *_bank, char *_address1, char *_address2, char *_size)
Emit ASM code for instruction BANK READ ....
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.
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.
Variable * music_load_to_variable(Environment *_environment, char *_filename, char *_alias, int _bank_expansion)
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.
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)
struct _TileDescriptor TileDescriptor
void cls_box(Environment *_environment, char *_x1, char *_y1, char *_w, char *_h)
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 ....
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)
void every_off(Environment *_environment, char *_timer)
Emit ASM code for EVERY OFF.
Variable * vector_get_x(Environment *_environment, char *_vector)
void input(Environment *_environment, char *_variable, VariableType _default_type)
void sound_vars(Environment *_environment, char *_freq, char *_duration, char *_channels)
Emit ASM code for SOUND ....
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(...).
void wait_milliseconds_var(Environment *_environment, char *_timing)
Emit ASM code for WAIT [expression] MILLISECONDS.
POBuffer po_buf_cat(POBuffer buf, char *string)
void remember(Environment *_environment)
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.
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)
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)
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]).
void sprite_compress_vertical(Environment *_environment, int _sprite)
Emit ASM code for SPRITE [int] CPMPRESS VERTICAL.
void flash_off(Environment *_environment, char *_index)
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$.
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(...).
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].
Variable * tile_get_first(Environment *_environment, char *_tile)
Emit code for TILE FIRST(...).
void target_cleanup(Environment *_environment)
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].
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.
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].
void upw(Environment *_environment, char *_line, char *_column, char *_width, char *_height)
Emit code for UPB ....
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)
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)
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 ....
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 ....
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)
void gosub_label(Environment *_environment, char *_label)
Emit ASM code for GOSUB [label].
Variable * animating(Environment *_environment, char *_prefix, char *_animation)
Emit code for RUN PARALLEL.
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.
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 ....
void out_var(Environment *_environment, char *_port, char *_value)
Emit ASM code for OUT.
void print(Environment *_environment, char *_text, int _new_line, int _raw)
Emit code for PRINT... instruction.
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)
int po_buf_cmp(POBuffer a, POBuffer b)
void wait_until(Environment *_environment)
Emit code for WAIT UNTIL ....
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].
void call_procedure(Environment *_environment, char *_name)
Emit code for CALL/PROC ....
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.
void target_analysis(Environment *_environment)
Variable * param_procedure(Environment *_environment, char *_name)
Emit code for PARAM(...).
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)
void finalize_text_variables(Environment *_environment)
Variable * sbpen_get(Environment *_environment, char *_index)
Variable * music_load(Environment *_environment, char *_filename, char *_alias, int _bank_expansion)
Emit code for LOAD MUSIC(...).
void memsave(Environment *_environment)
int tile_id(Environment *_environment, char *_tileset, char *_id)
Emit code for TILE ID(...).
void interleaved_instructions(Environment *_environment)
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 ...).
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.
void pause_seconds(Environment *_environment, char *_string, char *_duration)
void dojo_serial_put_requestds(Environment *_environment, int _command, char *_param1, char *_param2, char *_data, int _size, char *_result)
ImageDescriptor * image_descriptor_roll_y_down(Environment *_environment, ImageDescriptor *_source)
void memdef(Environment *_environment, char *_size, char *_address, char *_eaddress, char *_bank)
Variable * parser_adapted_numeric(Environment *_environment, int _number)
void print_tab(Environment *_environment, int _new_line)
Emit code for print a single TAB.
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)
char * banks_get_address(Environment *_environment, int _bank)
void tiles_at_var(Environment *_environment, char *_address)
Emit ASM code for TILES AT [expression].
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)
void dojo_serial_get_response(Environment *_environment, char *_status, char *_data, char *_size)
Variable * serial_read(Environment *_environment, char *_size)
Emit code for SERIAL READ(...).
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.
Variable * strptr(Environment *_environment, char *_name)
Emit code for function = STRPTR( ... ).
void memlen(Environment *_environment, char *_size)
char * image_roll_x_left(Environment *_environment, char *_source, int _width, int _height)
void dojo_serial_get_response_payloadd(Environment *_environment, char *_address)
enum _MusicType MusicType
void buffered_pop_output(Environment *_environment)
void text_vscroll_screen(Environment *_environment, int _direction, int _overlap)
void banks_generate(Environment *_environment)
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).
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.
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].
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.
_PeepHoleOptimizationKind
void leftw(Environment *_environment, char *_line, char *_column, char *_width, char *_height)
Emit code for LEFTW ....
void colormap_at_var(Environment *_environment, char *_address)
Emit ASM implementation for COLORMAP AT [expression] instruction.
void flip_image_vars_direction(Environment *_environment, char *_image, char *_frame, char *_sequence, int _direction)
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].
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)
char * image_enlarge_bottom(Environment *_environment, char *_source, int _width, int _height, int _delta)
void wait_fire_semivar(Environment *_environment, char *_port, int _release)
Variable * minimum(Environment *_environment, char *_source, char *_dest)
Return the minimum value between two expressions.
void jmove(Environment *_environment, char *_port, char *_x, char *_y, char *_minx, char *_maxx, char *_miny, char *_maxy, char *_xstep, char *_ystep)
Variable * decrypt(Environment *_environment, char *_data, char *_key, char *_var)
Emit code for DECRYPT.
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 ....
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).
void vars_emit_strips(Environment *_environment, char *_name, Strip *_strips)
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 ....
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 ...).
void pokew_var(Environment *_environment, char *_address, char *_value)
char * escape_newlines_full(char *_string, int _size)
void print_newline(Environment *_environment)
Emit code for print a single newline.
void memory_area_assign(MemoryArea *_first, Variable *_variable)
void cpuspeed(Environment *_environment, char *_value)
Emit ASM code for CPUSPEED.
Variable * joyy(Environment *_environment, int _port)
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 ....
void read_data_unsafe(Environment *_environment, char *_variable)
void copper_nop(Environment *_environment)
Emit code for BEGIN COPPER.
void end_do_loop(Environment *_environment)
Emit ASM code for ... LOOP.
void paper(Environment *_environment, char *_paper)
Emit code for PAPER ... command.
POVariable * po_var_find(char *_name)
void dojo_serial_begin(Environment *_environment)
void mmove_video_memory(Environment *_environment, char *_from, char *_to, char *_size)
Emit ASM code for MMOVE {VIDEO} [expr] TO {VIDEO} [expr] SIZE [expr].
void begin_for_step_prepare(Environment *_environment)
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 ...).
void shared(Environment *_environment)
Manage variable as "global".
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)
Variable * varptr(Environment *_environment, char *_identifier)
Emit code for function = VARPTR( ... ).
Variable * read_end(Environment *_environment)
Emit code for READ END function.
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.
void on_proc(Environment *_environment, char *_expression)
Emit ASM code for ON ... PROC ....
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)
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.
void buffered_output(Environment *_environment, FILE *_stream)
void text_vscroll(Environment *_environment)
void resume_vars(Environment *_environment, char *_thread)
Emit code for RESUME ....
void tiles_at(Environment *_environment, int _address)
Emit ASM code for TILES AT [int]xx.
void mmob(Environment *_environment, char *_sprite, char *_sx, char *_sy, char *_zx, char *_zy, char *_gr, char *_sp)
Emit code for MOVE ....
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].
void writing(Environment *_environment, char *_mode, char *_parts)
Emit code for WRITING.
void on_goto(Environment *_environment, char *_expression)
Emit ASM code for ON ... GOTO ....
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)
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).
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)
Variable * new_images(Environment *_environment, int _frames, int _width, int _height, int _mode)
Emit code for NEW IMAGE(...).
void console_calculate(Environment *_environment)
void begin_build(Environment *_environment)
Start building exe from assembly.
void mmove_memory_memory(Environment *_environment, char *_from, char *_to, char *_size)
Emit ASM code for MMOVE [expr] TO [expr] SIZE [expr].
Variable * point(Environment *_environment, char *_x, char *_y)
Emit code for POINT(...).
Variable * peekw_var(Environment *_environment, char *_location)
ImageDescriptor * image_descriptor_flip_x(Environment *_environment, ImageDescriptor *_source)
void every_ticks_call(Environment *_environment, char *_timing, char *_label, char *_timer)
int file_get_size(Environment *_environment, char *_filename)
Variable * collision_to_vars(Environment *_environment, char *_sprite)
Emit ASM code for = COLLISION([expression]).
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)
void charset_at(Environment *_environment, int _value)
Emit ASM implementation for BITMAP AT [int] instruction.
Variable * variable_string_flip(Environment *_environment, char *_string)
Emit code for = FLIP( ... ).
_Dialect
Type of dialects.
void linker_cleanup(Environment *_environment)
Emit tail of linker's configuration file lines.
void cmove(Environment *_environment, char *_dx, char *_dy)
Emit code for CMOVE.
void dojo_get_response_payload(Environment *_environment, char *_address)
void begin_for_to_assign(Environment *_environment, char *_to)
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.
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.
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.
Variable * fp_log(Environment *_environment, char *_value)
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].