diff options
author | neonloop | 2021-10-20 14:54:27 +0000 |
---|---|---|
committer | neonloop | 2021-10-20 14:54:27 +0000 |
commit | ea1947ffcc606d757357398b24e74a3f4ecefa07 (patch) | |
tree | 2031b8d4fc4c61063c710a7148378f57e662efbd /core/include/pslang.h | |
download | bennugd-main.tar.gz bennugd-main.tar.bz2 bennugd-main.zip |
Initial commit from steward-fu releasemain
Diffstat (limited to 'core/include/pslang.h')
-rw-r--r-- | core/include/pslang.h | 241 |
1 files changed, 241 insertions, 0 deletions
diff --git a/core/include/pslang.h b/core/include/pslang.h new file mode 100644 index 0000000..8bebe84 --- /dev/null +++ b/core/include/pslang.h @@ -0,0 +1,241 @@ +/* + * Copyright © 2006-2013 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. + * + */ + +#ifndef __PSLANG_H +#define __PSLANG_H + +/* --------------------- */ +/* Flags para mnemónicos */ +/* --------------------- */ + +/* Número de parámetros */ + +#define MN_0_PARAMS (0x00) +#define MN_1_PARAMS (0x80) + +#define MN_PARAMS(code) (((code) & 0x80) >> 7) + +/* Mascara */ +#define MN_MASK 0xFF + +/* Tipo de dato */ + +#define MN_DWORD (0x000) +#define MN_WORD (0x100) +#define MN_BYTE (0x200) +#define MN_STRING (0x300) +#define MN_FLOAT (0x400) +#define MN_UNSIGNED (0x800) + +#define MN_TYPEOF(code) ((code) & 0xF00) + +/* -------------------- */ +/* Códigos de mnemónico */ +/* -------------------- */ + +/* Salidas */ + +#define MN_END (0x00| MN_0_PARAMS) +#define MN_RETURN (0x01| MN_0_PARAMS) +#define MN_FRAME (0x02| MN_0_PARAMS) + +/* Operaciones con la pila */ + +#define MN_DUP (0x03| MN_0_PARAMS) +#define MN_PUSH (0x04| MN_1_PARAMS) +#define MN_POP (0x05| MN_0_PARAMS) + +/* Control Switch */ + +#define MN_SWITCH (0x06| MN_0_PARAMS) +#define MN_CASE (0x07| MN_0_PARAMS) +#define MN_CASE_R (0x08| MN_0_PARAMS) + +/* Llamadas */ + +#define MN_CALL (0x09| MN_1_PARAMS) +#define MN_SYSCALL (0x0A| MN_1_PARAMS) +#define MN_PROC (0x0B| MN_1_PARAMS) +#define MN_SYSPROC (0x0C| MN_1_PARAMS) +#define MN_CLONE (0x0D| MN_1_PARAMS) + +#define MN_TYPE (0x0E| MN_1_PARAMS) +#define MN_DEBUG (0x0F| MN_0_PARAMS) + +/* Direccionamiento */ + +#define MN_INDEX (0x10| MN_1_PARAMS) +#define MN_ARRAY (0x11| MN_1_PARAMS) +#define MN_PRIVATE (0x12| MN_1_PARAMS) +#define MN_LOCAL (0x13| MN_1_PARAMS) +#define MN_GLOBAL (0x14| MN_1_PARAMS) +#define MN_REMOTE (0x15| MN_1_PARAMS) +#define MN_PTR (0x16| MN_0_PARAMS) + +/* Acceso a variables */ + +#define MN_GET_PRIV (0x17| MN_1_PARAMS) +#define MN_GET_LOCAL (0x18| MN_1_PARAMS) +#define MN_GET_GLOBAL (0x19| MN_1_PARAMS) +#define MN_GET_REMOTE (0x1A| MN_1_PARAMS) + +/* Control de flujo */ + +#define MN_JUMP (0x1B| MN_1_PARAMS) +#define MN_JFALSE (0x1C| MN_1_PARAMS) +#define MN_JTRUE (0x1D| MN_1_PARAMS) +#define MN_JTFALSE (0x1E| MN_1_PARAMS) +#define MN_JTTRUE (0x1F| MN_1_PARAMS) +#define MN_JNOCASE (0x20| MN_1_PARAMS) + +/* Operaciones unarias - aceptan tipos de dato numéricos */ + +#define MN_NEG (0x21| MN_0_PARAMS) +#define MN_NOT (0x22| MN_0_PARAMS) + +/* Operaciones binarias - Aceptan tipos de dato numéricos */ + +#define MN_MUL (0x23| MN_0_PARAMS) +#define MN_DIV (0x24| MN_0_PARAMS) +#define MN_ADD (0x25| MN_0_PARAMS) +#define MN_SUB (0x26| MN_0_PARAMS) +#define MN_MOD (0x27| MN_0_PARAMS) +#define MN_ROR (0x28| MN_0_PARAMS) +#define MN_ROL (0x29| MN_0_PARAMS) +#define MN_AND (0x2A| MN_0_PARAMS) +#define MN_OR (0x2B| MN_0_PARAMS) +#define MN_XOR (0x2C| MN_0_PARAMS) + +/* Comparaciones binarias */ + +#define MN_EQ (0x2D| MN_0_PARAMS) +#define MN_NE (0x2E| MN_0_PARAMS) +#define MN_GT (0x2F| MN_0_PARAMS) +#define MN_LT (0x30| MN_0_PARAMS) +#define MN_GTE (0x31| MN_0_PARAMS) +#define MN_LTE (0x32| MN_0_PARAMS) + +/* Post/pre-operadores */ + +#define MN_POSTINC (0x33| MN_1_PARAMS) +#define MN_POSTDEC (0x34| MN_1_PARAMS) +#define MN_INC (0x35| MN_1_PARAMS) +#define MN_DEC (0x36| MN_1_PARAMS) + +/* Alteración directa de variables */ + +#define MN_LET (0x37| MN_0_PARAMS) +#define MN_VARADD (0x38| MN_0_PARAMS) +#define MN_VARSUB (0x39| MN_0_PARAMS) +#define MN_VARMUL (0x3A| MN_0_PARAMS) +#define MN_VARDIV (0x3B| MN_0_PARAMS) +#define MN_VARMOD (0x3C| MN_0_PARAMS) +#define MN_VARXOR (0x3D| MN_0_PARAMS) +#define MN_VARAND (0x3E| MN_0_PARAMS) +#define MN_VAROR (0x3F| MN_0_PARAMS) +#define MN_VARROR (0x40| MN_0_PARAMS) +#define MN_VARROL (0x41| MN_0_PARAMS) + +/* Funciones de cadena */ + +#define MN_SUBSTR (0x42| MN_0_PARAMS) +#define MN_STRI2CHR (0x43| MN_0_PARAMS) +#define MN_INT2STR (0x44| MN_1_PARAMS) +#define MN_FLOAT2STR (0x45| MN_1_PARAMS) +#define MN_CHR2STR (0x46| MN_1_PARAMS) + +/* Optimizaciones */ + +#define MN_LETNP (0x47| MN_0_PARAMS) + +/* Operadores Bitwise */ + +#define MN_BNOT (0x48| MN_0_PARAMS) +#define MN_BAND (0x49| MN_0_PARAMS) +#define MN_BOR (0x4A| MN_0_PARAMS) +#define MN_BXOR (0x4B| MN_0_PARAMS) + +/*** Free 4C, 4D, 4E, 4F ***/ + +/* Funciones de conversión */ + +#define MN_INT2FLOAT (0x50| MN_1_PARAMS) +#define MN_FLOAT2INT (0x51| MN_1_PARAMS) + +/*** Free 52, 53, 54, 55, 56, 57, 58, 59, 5A, 5B, 5C, 5D, 5E, 5F ****/ + +#define MN_A2STR (0x60| MN_1_PARAMS) +#define MN_STR2A (0x61| MN_1_PARAMS) +#define MN_STRACAT (0x62| MN_1_PARAMS) +#define MN_INT2WORD (0x63| MN_1_PARAMS) +#define MN_INT2BYTE (0x64| MN_1_PARAMS) + +/* Funciones de control de flujo */ +#define MN_NCALL (0x65| MN_1_PARAMS) + +/*** Free 66, 67, 68, 69 ****/ + +/* Handlers */ +#define MN_EXITHNDLR (0x6A| MN_1_PARAMS) +#define MN_ERRHNDLR (0x6B| MN_1_PARAMS) +#define MN_RESUME (0x6C| MN_1_PARAMS) +#define MN_RESUMEGOTO (0x6D| MN_1_PARAMS) + +/*** Free 6E, 6F ****/ + +/* Mnemónicos inexistentes - usados por el compilador internamente */ + +#define MN_REPEAT (0x70| MN_1_PARAMS) +#define MN_BREAK (0x71| MN_1_PARAMS) +#define MN_BRFALSE (0x72| MN_1_PARAMS) +#define MN_RETRUE (0x73| MN_1_PARAMS) +#define MN_REFALSE (0x74| MN_1_PARAMS) + +/* Funciones de cadena (2) */ + +#define MN_POINTER2STR (0x75| MN_1_PARAMS) +/* #define MN_POINTER2BOL (0x76| MN_1_PARAMS) */ +#define MN_STR2INT (0x77| MN_1_PARAMS) +#define MN_STR2FLOAT (0x78| MN_1_PARAMS) +#define MN_STR2CHR (0x79| MN_1_PARAMS) + +/* Tratamiento de Locales a proceso */ + +#define MN_PUBLIC (0x7A| MN_1_PARAMS) /* Direccionamiento */ +#define MN_GET_PUBLIC (0x7B| MN_1_PARAMS) /* Acceso a variables */ + +#define MN_REMOTE_PUBLIC (0x7C| MN_1_PARAMS) /* Direccionamiento */ +#define MN_GET_REMOTE_PUBLIC (0x7D| MN_1_PARAMS) /* Acceso a variables */ + +/* Depurado */ + +#define MN_SENTENCE (0x7F| MN_1_PARAMS) + +/* Max: 0x7F */ + +#endif |