home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turbo Toolbox
/
Turbo_Toolbox.iso
/
1991
/
04
/
txl
/
1_preis
/
kubasic.h
< prev
next >
Wrap
Text File
|
1991-02-02
|
11KB
|
413 lines
/************************************************************************
* ....................................... *
* . . *
* . TOOLBOX - INTERPRETER . *
* . HEADER - DATEI . *
* . KUBASIC.H . *
* ....................................... *
*************************************************************************/
#define MN_ACHT 8
#define MN_ZEHN 10
#define MN_ZWLF 12
#define MN_DRZN 13
#define MN_FFZN 15
#define MN_SHZN 16
#define MN_ACZN 18
#define MN_NNZN 19
#define MN_ZWAN 20
#define MN_EIZW 21
#define MN_ZWZW 22
#define MN_VRZW 24
#define MN_SXZW 26
#define MN_SIZW 27
#define MN_ACZW 28
#define MN_NNZW 29
#define MN_DRSG 30
#define MN_ZWSG 32
#define MN_FFSG 35
#define MN_SXSG 36
#define MN_SISG 37
#define MN_ACSG 38
#define MN_NNSG 39
#define MN_VRZG 40
#define MN_ZWZG 42
#define MN_VVZG 44
#define MN_FFZG 45
#define MN_ACZG 48
#define MN_FFZC 50
#define MN_ZWZC 52
#define MN_VFZC 54
#define MN_SXZC 56
#define IDSNAME 100
#define IDSABOUT 200
#define IDSTITLE 300
#define MN_EXIT 101
#define MN_HELP 102
#define MN_QUESTION 103
#define MN_TEXT 104
#define MN_COPY 105
#define MN_UNDO 106
#define MN_CUT 107
#define MN_CLEAR 108
#define MN_ELOAD 109
#define MN_ESAVE 110
#define MN_SELECT 111
#define MN_SEARCH 112
#define MN_WSEARCH 113
#define MN_ERSETZE 114
#define MN_WERSETZE 115
#define MN_EDITOR 116
#define MN_CLS 117
#define MN_TYPESET 118
#define MN_LIST 119
#define MN_RUN 120
#define MN_LOAD 121
#define MN_SAVE 122
#define MN_MONO 123
#define MN_INTERPR 124
#define MN_SCREEN 125
#define MN_SYSFON 126
#define MN_TERFON 127
#define MN_HELFON 128
#define MN_COUFON 129
#define MN_TMSFON 130
#define MN_ROMFON 131
#define MN_SCRFON 132
#define MN_MODFON 133
#define OP_DEF 136
#define OP_CHAR 137
#define OP_STRING 138
#define OP_STROKE 139
#define CL_DEF 140
#define CL_CHAR 141
#define CL_STROKE 142
#define QU_DEF 143
#define QU_DRAFT 144
#define QU_PROOF 145
#define FA_DEF 146
#define FA_FIX 147
#define FA_VAR 148
#define FA_DNTC 149
#define FA_DEC 150
#define FA_MOD 151
#define FA_ROM 152
#define FA_SCR 153
#define FA_SWS 154
#define MW_OEM 155
#define MW_ANSI 156
#define MW_NORMAL 157
#define MW_HEAVY 158
#define MN_KURSIV 159
#define MN_UNTERS 160
#define MN_DURCHG 161
#define MW_TEXTBOX 162
#define MW_TEXTHELP 167
#define ID_FILENAME 168
#define ID_EDIT 169
#define ID_FILES 170
#define ID_PATH 171
#define ID_LISTBOX 172
#define MN_PASTE 173
#define ABOUTBOX 1
#define KUBASICON 1
#define ERROR_1 -1
#define CR 0x0d
#define LF 0x0a
#define SPACE 0x20
#define MAXDIM 3
#define ZAHL 0x01
#define TEXT 0x02
#define FELD 0x03
#define VNLAENGE 10 /* 10 signifikante Zeichen */
#define ZEILENLAENGE 256 /* Zeilenlaenge 80 Zeichen */
#define FNAMLEN 128 /* Laenge des Filenamens */
#define NAMLEN 20
#define FORWHILETIEFE 10
/* Über "Steuer" bekannte Zeichenfolgen */
#define ALPHA 0x01 /* Buchstaben */
#define ZIFFER 0x02 /* Ganzzahl */
#define FIXNUM 0x03 /* Fließkommazahl */
#define FLONUM 0x04 /* Fließkommazahl */
#define SONDER 0x05 /* Sonderzeichen */
#define STRING 0x06 /* Stringanfang wurde gefunden */
#define EOLCHAR 0x07 /* Zeilenendezeichen */
#define TRENNER 0x08 /* Trennzeichen */
#define UNKNOWN 0xff /* ungueltiger Steuercode */
/* Fehlermeldungen fuer den Scanner */
#define UNGL 0x3a
#define KLGL 0x3b
#define KL 0x3c
#define GL 0x3d
#define GR 0x3e
#define GRGL 0x3f
#define AND 0x41
#define OR 0x42
#define XOR 0x43
#define EQV 0x44
#define NOT 0x45
#define EOLFEHLER -1 /* Zeilenende erreicht
ohne Befehlsende */
#define UNEOL -1 /* unerwartetes Zeilenende */
#define INVCHAR -2 /* ungueltiges Zeichen gefunden */
#define SCANOK 1 /* kein Fehler aufgetreten */
/* Tokendefinitionen fuer die bekannten Befehle */
#define TOKMIN 0x80
#define TOKINPUT 0x81
#define TOKTITLW 0x82
#define TOKRECTANG 0x83
#define TOKLINETO 0x84
#define TOKELLIPSE 0x85
#define TOKRUNDREC 0x86
#define TOKARC 0x87
#define TOKSETPXL 0x88
#define TOKMOVEW 0x89
#define TOKPIE 0x8a
#define TOKDRUCKON 0x8b
#define TOKNEU 0x8c
#define TOKCLS 0x8d
#define TOKRU 0x8e
#define TOKDRUC 0x8f
#define TOKNEW 0x90
#define TOKI 0x91
#define TOKLOA 0x92
#define TOKSAV 0x93
#define TOKGOT 0x94
#define TOKEN 0x95
#define TOKEXI 0x96
#define TOKMERK 0x97
#define TOKLIS 0x98
#define TOKlET 0x99
#define TOKSCREEN 0x9a
#define TOKLLIST 0x9b
#define TOKLOCATE 0x9c
#define TOKRECTL 0x9d
#define TOKFLOODF 0x9e
#define TOKTEXTCOL 0x9f
#define TOKBACKDRD 0xa0
#define TOKCOLOR 0xa1
#define TOKPENCOL 0xa2
#define TOKMSGBOX 0xa3
#define TOKVIERECK 0xa4
#define TOKRECTLIN 0xa5
#define TOKINLINE 0xa6
#define TOKFOR 0xa7
#define TOKNEXT 0xa8
#define TOKWHILE 0xa9
#define TOKWEND 0xaa
#define TOKCURSOR 0xab
#define TOKRUNBREAK 0xac
#define TOKMAX 0xad
#define VARIABLE 0
#define INPUT 1
#define FORNEXT 2
#define INLINE 3
#define OK 1
/* Tokendefinitionen fuer die Unaeren Funktionen */
#define Ln 0x61
#define Log 0x62
#define Exponent 0x63
#define Sinus 0x64
#define Cosinus 0x65
#define Tangens 0x66
#define ArcSin 0x67
#define ArcCos 0x68
#define ArcTan 0x69
#define SinHyp 0x6A
#define CosHyp 0x6B
#define TanHyp 0x6C
#define Sqrt 0x6D
#define Frac 0x6E
#define Absolut 0x6F
#define Cotangens 0x70
#define ArcTanHyp 0x71
#define ArcCot 0x72
#define SIGN 0x73
#define e 2.718281829L
#define PI_HALBE 1.570796327L
#define pi 3.14159265358979323846L
#define grad pi/180
#define pitograd 180/pi
typedef struct NODESTRUCT *PTNODE;
typedef struct NODESTRUCT {
unsigned char operator;
double *operand;
PTNODE LeftAst,RightAst;
} NODESTRUCT;
typedef struct prgzeile {
int LineNumber;
char Zeile[ZEILENLAENGE];
struct prgzeile *NextZeile;
struct prgzeile *PrevZeile;
} PRGZEILE;
/* Variablendarstellung */
typedef struct vardef {
union uvar {
char zeichen;
int integer;
double Flotype;
char *text;
void *feld;
} variable;
unsigned char dim1; /* Anzahl Dimensionen */
unsigned char dimdef[MAXDIM]; /* Feldfestlegung */
} VARDEF;
typedef struct var {
char VarName[VNLAENGE];
unsigned char VarType;
VARDEF VarWert;
void *NextVar;
} VAR;
/* Funktionszeigerdefinition */
typedef int (*PTF)();
/* Typ zur Beschreibung der vorhandenen Befehle */
typedef struct tokbef {
PTF function; /* Zeiger auf die C-Funktion */
char *Befehl; /* Zeiger auf den Bef.-Namen */
int ParaCount; /* Anzahl der Parameter */
int CopyRest; /* Restzeile in Interpreter-
zeile uebernehmen */
} TOKBEF;
typedef struct forarr{
PRGZEILE *Goto;
VAR *forX;
char *whilestr;
double toY;
double step;
} FORARRAY;
void Nullenweg();
void menuecommand(HWND hWnd,WORD wParam);
void ResetError ();
void fatal_error (char *FehlerMeldung);
void serror (char *FehlerMeldung);
int ccolor();
void makefont();
void KuBaBitmap(HWND hWnd,HDC hDC);
void ErzeugeCursor(HWND hWnd);
void Carret(unsigned char *String);
int cviereck();
int crectline();
int cbackgrd();
int cpencolor();
int cfor();
int cnext();
int csetprint();
int cscreen();
int ctextcol();
int cflodfil();
int ctexttype();
int clocate();
int cllist();
DWORD SetRGBColor(int XW2);
HDC GetPrinterDC();
int FindInsPos (int LineNumber,PRGZEILE **InsPos);
int ccls(void);
int cmove(void);
int cwtitle();
int croundrect();
int crectangle();
int cpolyline();
int csetpxl();
int cellipse();
int clineto();
int crun(void);
int crunb(void);
int cset(void);
int cinline(void);
int cinput(void);
int cdruck(void);
int cif (void);
int cpie();
int carc(void);
int cload(void);
int csave(void);
int cgoto(void);
int cende(void);
int cexit(void);
int cmerke(void);
int clist (void);
int cneu(void);
int messagebox();
int cwhile();
int cwend();
int ccursor(void);
int MsgBox(char *Questr);
void PRINTF(unsigned char *String);
void InsIntLine (void);
int DelLine (int LineNumber);
void InterAct (void);
int InterpLine (void);
void PosVar(char fkt[],unsigned char name[]);
int DoProgram (void);
int MakeToken (void);
void ShowLine (PRGZEILE *FindZeile);
VAR * IsVariable (char *Name);
int SetVar (VAR *Wert,BOOL Input);
void SetValue (VARDEF *Wert,VARDEF *NewVar,unsigned char Type);
int CmpVar (void);
void PrintVar (char *Name);
int CalcExpression (VAR *Result);
void ClearProg (void);
int Scan (void);
void NoSkipChar (void);
void SkipChar (void);
void GetGeklammert (char *buffer);
int ReadProg (void);
int WriteProg (void);
void SetFileName (char *FName);
char *GetFileName (void);
int TestBefehl (int *Befehl);
void Waehlbox();
long FAR PASCAL kubasicWndProc(HWND, unsigned, WORD, LONG);
void GetChar (void);
void GetNextChar (void);
void GetZahl (char *buffer);
void GetBezeichner (char *buffer);
void GetString (char *buffer);
void SkipSpace (void);
void Paramtozeichne(int was,int hole);
void Zeichne(int was);
void TEXTZEILE(HDC hDC,unsigned char *String);
void ClearVar();
int KlammerTok();
int ReadInt (char *Name);