// keywords.h

#define word  unsigned short int
#define dword unsigned long int
#define byte  unsigned char
#define ext   long double
#define bool  signed char

#ifndef TRUE
  #define TRUE -1
  #define FALSE 0
#endif

// Library definitions, for quick referencing and reduced .EXE size
#define ID_ANSI     0
#define ID_DOS      1
#define ID_GRAPHICS 2
#define ID_VARIABLE 3
#define ID_MM       4

// Libraries contain their own commands
//void ANSI_Library();
//void DOS_LIbrary();
//void GRAPHICS_Library();
//void MM_Library();
//void VARIABLE_Library();

// BASIC Data types and a few additional
#define DT_STRING    10
#define DT_BYTE      11
#define DT_INTEGER   12
#define DT_WORD      13
#define DT_LONGINT   14
#define DT_DWORD     15
#define DT_SINGLE    16
#define DT_DOUBLE    17
#define DT_EXT       18
#define DT_VARIABLE  19
#define DT_VARSTR    20
#define DT_VARBYTE   21
#define DT_VARINT    22
#define DT_VARWORD   23
#define DT_VARLONG   24
#define DT_VARDWORD  25
#define DT_VARSNG    26
#define DT_VARDBL    27
#define DT_VAREXT    28
#define DT_NONE      29
#define DT_ARRAY     30
#define DT_EXPRESSION  31
#define DT_STREXPR     32
#define DT_FUNCTION    33
// Operators
#define OP_AND      40
#define OP_OR       41
#define OP_XOR      42
#define OP_NOT      43
#define OP_ADD      44
#define OP_MINUS    45
#define OP_MULT     46
#define OP_DIVIDE   47
#define OP_POWER    48
#define OP_MOD      49
// Expression Keywords
#define EX_EQUAL      50
#define EX_NOTEQUAL   51
#define EX_GREATER    52
#define EX_LESS       53
#define EX_GREATEREQ  54
#define EX_LESSEQ     55
#define EX_DEPEND     56

// Keywords for ANSI Library
#define IK_PRINT        0
#define IK_PRINT_NOCRLF 1
#define IK_DIM          2
#define IK_IF           3
#define IK_GOTO         4
#define IK_FOR          5   // Emulated with STEP, IF and GOTO
#define IK_STEP         6
#define IK_WHILE        7   // Emulated with IF and GOTO
#define IK_ELSE         8
#define IK_ELSEIF       9
#define IK_LEFT         10
#define IK_RIGHT        11
#define IK_MID          12
#define IK_VAL          13
#define IK_GOSUB        14
#define IK_RETURN       15
//#define IK_INPUT        16
#define IK_GETS         17
#define IK_END          18
#define IK_CHR          19
#define IK_ASC          20
#define IK_STRING       21
#define IK_DO           22
#define IK_UCASE        23
#define IK_LCASE        24
#define IK_COS          25
#define IK_SIN          26
#define IK_TAN          27
#define IK_SQR          28
#define IK_ABS          29
#define IK_STR          30
#define IK_TAB          31
#define IK_SPACE        32
#define IK_INSTR        33
#define IK_RTRIM        34
#define IK_LTRIM        35
#define IK_LINEINPUT    36
#define IK_INPUTSTR     37
#define IK_SWAP         38
#define IK_LEN          39
#define IK_LOG          40
#define IK_LOG10        41
#define IK_EXP          42
#define IK_RANDOMIZE    43
#define IK_RND          44
#define IK_INT          45
#define IK_FIX          46
#define IK_CINT         47
#define IK_CDBL         48
#define IK_CSNG         49
#define IK_CLNG         50
#define IK_READ         51
#define IK_RESTORE      52
#define IK_SLEEP        53
#define IK_TIMER        54
#define IK_OPEN         55
#define IK_CLOSE        56
#define IK_FREEFILE     57
#define IK_LOF          58
#define IK_EOF          59
#define IK_SEEK         60
#define IK_GET          61
#define IK_PUT          62
#define IK_LOC          63
#define IK_KILL         64
#define IK_ENVIRON      65
#define IK_SHELL        66

// Keywords for VARIABLE Library
#define IK_ASSIGNMENT 0

// Keywords for DOS Library
#define IK_CLS          0
#define IK_LOCATE       1
#define IK_COLOR        2
#define IK_INKEY        3
#define IK_INPUT        4

// Keywords for GRAPHICS Library
#define IK_SCREEN        0
#define IK_SHOWJPG       1
#define IK_LINE          2
#define IK_RECT          3    // LINE with option B
#define IK_RECTFILL      4    // LINE with option BF
#define IK_CIRCLE        5
#define IK_PAINT         6
#define IK_POINT         7
#define IK_PSET          8

// Keywords for SOUND Library
#define IK_PLAYMP3       0
#define IK_RUNMP3        1
#define IK_FREEMP3       2
#define IK_REPLAYMP3     3
#define IK_BITRATEMP3    4
#define IK_SAMPRATEMP3   5
#define IK_POLLMP3       6
#define IK_POLLSIZEMP3   7
#define IK_STEREOMP3     8
