home *** CD-ROM | disk | FTP | other *** search
- /************************************************************************
- * ....................................... *
- * . . *
- * . TOOLBOX - INTERPRETER . *
- * . HEADER ->*.C . *
- * . TXL.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_SYMB 163
- #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 TXLICON 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 TOKCOMMANDS 0xad
- #define TOKMESSBEEP 0xae
- #define TOKREADCLPB 0xaf
- #define TOKWRITECLP 0xb0
- #define TOKMAX 0xbd
-
- #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 Round 0x74
-
-
- #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 Spaces(int i);
- void Nullenweg(void);
- void menuecommand(HWND hWnd,WORD wParam);
- void ResetError (void);
- void fatal_error (char *FehlerMeldung);
- void serror (char *FehlerMeldung);
- int ccolor(void);
- void makefont(void);
- void ErzeugeCursor(HWND hWnd);
- void Carret(unsigned char *String);
- int cviereck(void);
- int crectline(void);
- int cbackgrd(void);
- int cpencolor(void);
- int creadclp(void);
- int cwritclp(void);
- int cplay(void);
- int cfor(void);
- int cnext(void);
- int csetprint(void);
- int cscreen(void);
- int ctextcol(void);
- int cflodfil(void);
- int ctexttype(void);
- int clocate(void);
- int cllist(void);
- DWORD SetRGBColor(int XW2);
- HDC GetPrinterDC(void);
- int FindInsPos (int LineNumber,PRGZEILE **InsPos);
- int ccls(void);
- int cmove(void);
- int cwtitle(void);
- int croundrect(void);
- int crectangle(void);
- int cpolyline(void);
- int csetpxl(void);
- int cellipse(void);
- int clineto(void);
- int crun(void);
- int crunb(void);
- int cset(void);
- int cinline(void);
- int cinput(void);
- int cdruck(void);
- int cif (void);
- int cpie(void);
- 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(void);
- int cwhile(void);
- int cwend(void);
- int ccursor(void);
- int ccommands(void);
- int cbeep(void);
- int cplay(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(void);
- long FAR PASCAL txlWndProc(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(void);
- int KlammerTok(void);
- int ReadInt (char *Name);
- void txlBitmap(HWND hWnd,HDC hDC);
-