home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1991 / 04 / txl / 1_preis / kubasic.h < prev    next >
Text File  |  1991-02-02  |  11KB  |  413 lines

  1. /************************************************************************
  2. *                .......................................                *
  3. *                .                                     .                *
  4. *                .       TOOLBOX - INTERPRETER         .                *
  5. *                .        HEADER - DATEI               .                *
  6. *                .          KUBASIC.H                  .                *
  7. *                .......................................                *
  8. *************************************************************************/
  9.  
  10. #define MN_ACHT     8
  11. #define MN_ZEHN     10
  12. #define MN_ZWLF     12
  13. #define MN_DRZN     13
  14. #define MN_FFZN     15
  15. #define MN_SHZN     16
  16. #define MN_ACZN     18
  17. #define MN_NNZN     19
  18. #define MN_ZWAN     20
  19. #define MN_EIZW     21
  20. #define MN_ZWZW     22
  21. #define MN_VRZW     24
  22. #define MN_SXZW     26
  23. #define MN_SIZW     27
  24. #define MN_ACZW     28
  25. #define MN_NNZW     29
  26. #define MN_DRSG     30
  27. #define MN_ZWSG     32
  28. #define MN_FFSG     35
  29. #define MN_SXSG     36
  30. #define MN_SISG     37
  31. #define MN_ACSG     38
  32. #define MN_NNSG     39
  33. #define MN_VRZG     40
  34. #define MN_ZWZG     42
  35. #define MN_VVZG     44
  36. #define MN_FFZG     45
  37. #define MN_ACZG     48
  38. #define MN_FFZC     50
  39. #define MN_ZWZC     52
  40. #define MN_VFZC     54
  41. #define MN_SXZC     56
  42. #define IDSNAME     100
  43. #define IDSABOUT    200
  44. #define IDSTITLE    300
  45. #define MN_EXIT     101
  46. #define MN_HELP     102
  47. #define MN_QUESTION 103
  48. #define MN_TEXT     104
  49.  
  50. #define MN_COPY     105
  51. #define MN_UNDO     106
  52. #define MN_CUT      107
  53. #define MN_CLEAR    108
  54. #define MN_ELOAD    109
  55. #define MN_ESAVE    110
  56. #define MN_SELECT   111
  57. #define MN_SEARCH   112
  58. #define MN_WSEARCH  113
  59. #define MN_ERSETZE  114
  60. #define MN_WERSETZE 115
  61. #define MN_EDITOR   116
  62. #define MN_CLS      117
  63. #define MN_TYPESET  118
  64. #define MN_LIST     119
  65. #define MN_RUN      120
  66.  
  67. #define MN_LOAD     121
  68. #define MN_SAVE     122
  69. #define MN_MONO     123
  70. #define MN_INTERPR  124
  71. #define MN_SCREEN   125
  72.  
  73. #define MN_SYSFON   126
  74. #define MN_TERFON   127
  75. #define MN_HELFON   128
  76. #define MN_COUFON   129
  77. #define MN_TMSFON   130
  78. #define MN_ROMFON   131
  79. #define MN_SCRFON   132
  80. #define MN_MODFON   133
  81.  
  82. #define OP_DEF      136
  83. #define OP_CHAR     137
  84. #define OP_STRING   138
  85. #define OP_STROKE   139
  86. #define CL_DEF      140
  87. #define CL_CHAR     141
  88. #define CL_STROKE   142
  89. #define QU_DEF      143
  90. #define QU_DRAFT    144
  91. #define QU_PROOF    145
  92. #define FA_DEF      146
  93. #define FA_FIX      147
  94. #define FA_VAR      148
  95. #define FA_DNTC     149
  96. #define FA_DEC      150
  97. #define FA_MOD      151
  98. #define FA_ROM      152
  99. #define FA_SCR      153
  100. #define FA_SWS      154
  101. #define MW_OEM      155
  102. #define MW_ANSI     156
  103. #define MW_NORMAL   157
  104. #define MW_HEAVY    158
  105. #define MN_KURSIV   159
  106. #define MN_UNTERS   160
  107. #define MN_DURCHG   161
  108. #define MW_TEXTBOX  162
  109.  
  110. #define MW_TEXTHELP 167
  111. #define ID_FILENAME 168
  112. #define ID_EDIT     169
  113. #define ID_FILES    170
  114. #define ID_PATH     171
  115. #define ID_LISTBOX  172
  116. #define MN_PASTE    173
  117.  
  118.  
  119. #define ABOUTBOX      1
  120. #define KUBASICON     1
  121. #define ERROR_1      -1
  122.  
  123. #define CR          0x0d
  124. #define LF          0x0a
  125. #define SPACE       0x20
  126. #define MAXDIM         3
  127.  
  128.  
  129. #define ZAHL        0x01
  130. #define TEXT        0x02
  131. #define FELD        0x03
  132.  
  133. #define VNLAENGE      10       /* 10 signifikante Zeichen */
  134. #define ZEILENLAENGE 256        /* Zeilenlaenge 80 Zeichen */
  135. #define FNAMLEN      128          /* Laenge des Filenamens */
  136. #define NAMLEN        20
  137. #define FORWHILETIEFE 10
  138.  
  139. /* Über "Steuer" bekannte Zeichenfolgen */
  140. #define ALPHA       0x01                    /* Buchstaben */
  141. #define ZIFFER      0x02                      /* Ganzzahl */
  142. #define FIXNUM      0x03                /* Fließkommazahl */
  143. #define FLONUM      0x04                /* Fließkommazahl */
  144. #define SONDER      0x05                 /* Sonderzeichen */
  145. #define STRING      0x06   /* Stringanfang wurde gefunden */
  146. #define EOLCHAR     0x07             /* Zeilenendezeichen */
  147. #define TRENNER     0x08         /* Trennzeichen */
  148. #define UNKNOWN     0xff         /* ungueltiger Steuercode */
  149.  
  150. /* Fehlermeldungen fuer den Scanner */
  151.  
  152. #define UNGL         0x3a
  153. #define KLGL         0x3b
  154. #define KL           0x3c
  155. #define GL           0x3d
  156. #define GR           0x3e
  157. #define GRGL         0x3f
  158.  
  159. #define AND          0x41
  160. #define OR           0x42
  161. #define XOR          0x43
  162. #define EQV          0x44
  163. #define NOT          0x45
  164.  
  165.  
  166. #define EOLFEHLER     -1              /* Zeilenende erreicht
  167.                      ohne Befehlsende */
  168. #define UNEOL         -1       /* unerwartetes Zeilenende */
  169. #define INVCHAR       -2   /* ungueltiges Zeichen gefunden */
  170. #define SCANOK         1       /* kein Fehler aufgetreten */
  171.  
  172.  
  173. /* Tokendefinitionen fuer die bekannten Befehle */
  174. #define TOKMIN      0x80
  175. #define TOKINPUT    0x81
  176. #define TOKTITLW    0x82
  177. #define TOKRECTANG  0x83
  178. #define TOKLINETO   0x84
  179. #define TOKELLIPSE  0x85
  180. #define TOKRUNDREC  0x86
  181. #define TOKARC      0x87
  182. #define TOKSETPXL   0x88
  183. #define TOKMOVEW    0x89
  184. #define TOKPIE      0x8a
  185. #define TOKDRUCKON  0x8b
  186. #define TOKNEU      0x8c
  187. #define TOKCLS      0x8d
  188. #define TOKRU       0x8e
  189. #define TOKDRUC     0x8f
  190. #define TOKNEW      0x90
  191. #define TOKI        0x91
  192. #define TOKLOA      0x92
  193. #define TOKSAV      0x93
  194. #define TOKGOT      0x94
  195. #define TOKEN       0x95
  196. #define TOKEXI      0x96
  197. #define TOKMERK     0x97
  198. #define TOKLIS      0x98
  199. #define TOKlET      0x99
  200. #define TOKSCREEN   0x9a
  201. #define TOKLLIST    0x9b
  202. #define TOKLOCATE   0x9c
  203. #define TOKRECTL    0x9d
  204. #define TOKFLOODF   0x9e
  205. #define TOKTEXTCOL  0x9f
  206. #define TOKBACKDRD  0xa0
  207. #define TOKCOLOR    0xa1
  208. #define TOKPENCOL   0xa2
  209. #define TOKMSGBOX   0xa3
  210. #define TOKVIERECK  0xa4
  211. #define TOKRECTLIN  0xa5
  212. #define TOKINLINE   0xa6
  213. #define TOKFOR      0xa7
  214. #define TOKNEXT     0xa8
  215. #define TOKWHILE    0xa9
  216. #define TOKWEND     0xaa
  217. #define TOKCURSOR   0xab
  218. #define TOKRUNBREAK 0xac
  219. #define TOKMAX      0xad
  220.  
  221. #define VARIABLE    0
  222. #define INPUT       1
  223. #define FORNEXT     2
  224. #define INLINE      3
  225.  
  226. #define OK          1
  227.  
  228. /* Tokendefinitionen fuer die Unaeren Funktionen */
  229.  
  230. #define Ln          0x61
  231. #define Log         0x62
  232. #define Exponent    0x63
  233. #define Sinus       0x64
  234. #define Cosinus     0x65
  235. #define Tangens     0x66
  236. #define ArcSin      0x67
  237. #define ArcCos      0x68
  238. #define ArcTan      0x69
  239. #define SinHyp      0x6A
  240. #define CosHyp      0x6B
  241. #define TanHyp      0x6C
  242. #define Sqrt        0x6D
  243. #define Frac        0x6E
  244. #define Absolut     0x6F
  245. #define Cotangens   0x70
  246. #define ArcTanHyp   0x71
  247. #define ArcCot      0x72
  248. #define SIGN        0x73
  249.  
  250.  
  251. #define e           2.718281829L
  252. #define PI_HALBE    1.570796327L
  253. #define pi          3.14159265358979323846L
  254. #define grad        pi/180
  255. #define pitograd    180/pi
  256.  
  257. typedef struct NODESTRUCT *PTNODE;
  258.  
  259. typedef struct NODESTRUCT {
  260.   unsigned char operator;
  261.   double  *operand;
  262.   PTNODE LeftAst,RightAst;
  263. } NODESTRUCT;
  264.  
  265.  
  266. typedef struct prgzeile {
  267.   int             LineNumber;
  268.   char            Zeile[ZEILENLAENGE];
  269.   struct prgzeile *NextZeile;
  270.   struct prgzeile *PrevZeile;
  271. } PRGZEILE;
  272.  
  273. /* Variablendarstellung */
  274.  
  275. typedef struct vardef {
  276.   union uvar {
  277.     char               zeichen;
  278.     int                integer;
  279.     double             Flotype;
  280.     char               *text;
  281.     void               *feld;
  282.   } variable;
  283.   unsigned char        dim1;        /* Anzahl Dimensionen */
  284.   unsigned char        dimdef[MAXDIM];  /* Feldfestlegung */
  285. } VARDEF;
  286.  
  287. typedef struct var {
  288.   char                 VarName[VNLAENGE];
  289.   unsigned char        VarType;
  290.   VARDEF               VarWert;
  291.   void                 *NextVar;
  292. } VAR;
  293.  
  294. /* Funktionszeigerdefinition */
  295. typedef int            (*PTF)();
  296.  
  297. /* Typ zur Beschreibung der vorhandenen Befehle */
  298. typedef struct tokbef {
  299.   PTF        function;       /* Zeiger auf die C-Funktion */
  300.   char       *Befehl;        /* Zeiger auf den Bef.-Namen */
  301.   int        ParaCount;           /* Anzahl der Parameter */
  302.   int        CopyRest;          /* Restzeile in Interpreter-
  303.                      zeile uebernehmen */
  304. } TOKBEF;
  305.  
  306. typedef struct forarr{
  307.   PRGZEILE *Goto;
  308.   VAR      *forX;
  309.   char     *whilestr;
  310.   double    toY;
  311.   double    step;
  312. } FORARRAY;
  313.  
  314. void Nullenweg();
  315. void menuecommand(HWND hWnd,WORD wParam);
  316. void ResetError ();
  317. void fatal_error (char *FehlerMeldung);
  318. void serror (char      *FehlerMeldung);
  319. int ccolor();
  320. void makefont();
  321. void KuBaBitmap(HWND hWnd,HDC hDC);
  322. void ErzeugeCursor(HWND hWnd);
  323. void Carret(unsigned char *String);
  324. int cviereck();
  325. int crectline();
  326. int cbackgrd();
  327. int cpencolor();
  328. int cfor();
  329. int cnext();
  330. int csetprint();
  331. int cscreen();
  332. int ctextcol();
  333. int cflodfil();
  334. int ctexttype();
  335. int clocate();
  336. int cllist();
  337. DWORD SetRGBColor(int XW2);
  338. HDC GetPrinterDC();
  339. int FindInsPos (int LineNumber,PRGZEILE **InsPos);
  340. int ccls(void);
  341. int cmove(void);
  342. int cwtitle();
  343. int croundrect();
  344. int crectangle();
  345. int cpolyline();
  346. int csetpxl();
  347. int cellipse();
  348. int clineto();
  349. int crun(void);
  350. int crunb(void);
  351. int cset(void);
  352. int cinline(void);
  353. int cinput(void);
  354. int cdruck(void);
  355. int cif (void);
  356. int cpie();
  357. int carc(void);
  358. int cload(void);
  359. int csave(void);
  360. int cgoto(void);
  361. int cende(void);
  362. int cexit(void);
  363. int cmerke(void);
  364. int clist (void);
  365. int cneu(void);
  366. int messagebox();
  367. int cwhile();
  368. int cwend();
  369. int ccursor(void);
  370.  
  371. int MsgBox(char *Questr);
  372. void   PRINTF(unsigned char *String);
  373. void   InsIntLine (void);
  374. int    DelLine (int LineNumber);
  375. void   InterAct (void);
  376. int    InterpLine (void);
  377. void   PosVar(char fkt[],unsigned char name[]);
  378. int    DoProgram (void);
  379. int    MakeToken (void);
  380. void   ShowLine (PRGZEILE *FindZeile);
  381. VAR  * IsVariable (char *Name);
  382. int    SetVar (VAR *Wert,BOOL Input);
  383. void   SetValue (VARDEF *Wert,VARDEF *NewVar,unsigned char Type);
  384. int    CmpVar (void);
  385. void   PrintVar (char *Name);
  386. int    CalcExpression (VAR *Result);
  387. void   ClearProg (void);
  388. int    Scan (void);
  389. void   NoSkipChar (void);
  390. void   SkipChar (void);
  391. void   GetGeklammert (char *buffer);
  392. int    ReadProg (void);
  393. int    WriteProg (void);
  394. void   SetFileName (char *FName);
  395. char   *GetFileName (void);
  396. int     TestBefehl (int *Befehl);
  397.  
  398. void Waehlbox();
  399. long FAR PASCAL kubasicWndProc(HWND, unsigned, WORD, LONG);
  400. void GetChar (void);
  401. void GetNextChar (void);
  402. void GetZahl (char *buffer);
  403. void GetBezeichner (char *buffer);
  404. void GetString (char *buffer);
  405. void SkipSpace (void);
  406. void Paramtozeichne(int was,int hole);
  407. void Zeichne(int was);
  408. void TEXTZEILE(HDC hDC,unsigned char *String);
  409. void ClearVar();
  410. int KlammerTok();
  411. int ReadInt (char *Name);
  412.  
  413.