diff options
Diffstat (limited to 'core/bgdc/src/main_core.c')
-rw-r--r-- | core/bgdc/src/main_core.c | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/core/bgdc/src/main_core.c b/core/bgdc/src/main_core.c new file mode 100644 index 0000000..4040e66 --- /dev/null +++ b/core/bgdc/src/main_core.c @@ -0,0 +1,134 @@ +/* + * Copyright © 2006-2016 SplinterGU (Fenix/Bennugd) + * Copyright © 2002-2006 Fenix Team (Fenix) + * Copyright © 1999-2002 José Luis Cebrián Pagüe (Fenix) + * + * This file is part of Bennu - Game Development + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "bgdc.h" + +/* ----------------------------------------------------------------------- */ +/* Este módulo contiene las definiciones de constantes, globales y locales */ +/* predefinidos, así como el código que los carga y define cada una de las */ +/* funciones del sistema (es llamado antes de empezar a compilar). */ +/* ----------------------------------------------------------------------- */ + +static struct +{ + char * name ; + int type ; + int code ; +} +constants_def[] = +{ + { "STATUS_DEAD" , TYPE_DWORD, STATUS_DEAD }, + { "STATUS_KILLED" , TYPE_DWORD, STATUS_KILLED }, + { "STATUS_RUNNING" , TYPE_DWORD, STATUS_RUNNING }, + { "STATUS_SLEEPING" , TYPE_DWORD, STATUS_SLEEPING }, + { "STATUS_FROZEN" , TYPE_DWORD, STATUS_FROZEN }, + { "STATUS_WAITING" , TYPE_DWORD, STATUS_WAITING_MASK }, + + { "NULL" , TYPE_DWORD, 0 }, + + { "FALSE" , TYPE_DWORD, 0 }, + { "TRUE" , TYPE_DWORD, !0 }, + + { "OS_WIN32" , TYPE_DWORD, OS_WIN32 }, + { "OS_LINUX" , TYPE_DWORD, OS_LINUX }, + { "OS_BEOS" , TYPE_DWORD, OS_BEOS }, + { "OS_MACOS" , TYPE_DWORD, OS_MACOS }, + { "OS_GP32" , TYPE_DWORD, OS_GP32 }, + { "OS_DC" , TYPE_DWORD, OS_DC }, + { "OS_BSD" , TYPE_DWORD, OS_BSD }, + { "OS_GP2X" , TYPE_DWORD, OS_GP2X }, + { "OS_GP2X_WIZ" , TYPE_DWORD, OS_GP2X_WIZ }, + { "OS_CAANOO" , TYPE_DWORD, OS_CAANOO }, + { "OS_DINGUX_A320" , TYPE_DWORD, OS_DINGUX_A320 }, + { "OS_WII" , TYPE_DWORD, OS_WII }, + { "OS_ANDROID" , TYPE_DWORD, OS_ANDROID }, + { "OS_IOS" , TYPE_DWORD, OS_IOS }, + + { "MIN_INT" , TYPE_INT , -2147483647L - 1 }, + { "MAX_INT" , TYPE_INT , 2147483647L }, + { "MIN_DWORD" , TYPE_DWORD, 0 }, + { "MAX_DWORD" , TYPE_DWORD, 0xffffffff }, + + { "MIN_SHORT" , TYPE_SHORT, -32768 }, + { "MAX_SHORT" , TYPE_SHORT, 32767 }, + { "MIN_WORD" , TYPE_WORD , 0 }, + { "MAX_WORD" , TYPE_WORD , 0xffff }, + + { "MIN_SBYTE" , TYPE_SBYTE, -128 }, + { "MAX_SBYTE" , TYPE_SBYTE, 127 }, + { "MIN_BYTE" , TYPE_BYTE , 0 }, + { "MAX_BYTE" , TYPE_BYTE , 0xff }, + + { "MIN_CHAR" , TYPE_BYTE , 0 }, + { "MAX_CHAR" , TYPE_BYTE , 0xff }, + + { NULL , 0 , 0 } +} ; + +static char * globals_def = + "argc;\n" + "string argv[32];\n" + "os_id = -1;\n"; + +static char * locals_def = + "id;\n" + "STRUCT reserved\n" + "process_type;\n" + "frame_percent;\n" + "status = STATUS_RUNNING;\n" + "saved_status = STATUS_RUNNING;\n" + "saved_priority;\n" + "END\n" + + "father;\n" + "son;\n" + "smallbro;\n" + "bigbro;\n" + "priority;\n"; + +void core_init() +{ + int i = 0, code ; + + while ( constants_def[i].name ) + { + code = identifier_search_or_add( constants_def[i].name ) ; + constants_add( code, typedef_new( constants_def[i].type ), constants_def[i].code ) ; + i++ ; + } + + token_init( globals_def, -1 ) ; + compile_varspace( &global, globaldata, 1, 1, 0, NULL, DEFAULT_ALIGNMENT, 0 ) ; + + token_init( locals_def, -1 ) ; + compile_varspace( &local, localdata, 1, 1, 0, NULL, DEFAULT_ALIGNMENT, 0 ) ; +} |