]> 4ch.mooo.com Git - 16.git/blob - 16/v2/source/VCC/FUNCLIB.C
cleaned up the repo from debugging watcom2 ^^
[16.git] / 16 / v2 / source / VCC / FUNCLIB.C
1 /*\r
2 Copyright (C) 1998 BJ Eirich (aka vecna)\r
3 This program is free software; you can redistribute it and/or\r
4 modify it under the terms of the GNU General Public License\r
5 as published by the Free Software Foundation; either version 2\r
6 of the License, or (at your option) any later version.\r
7 This program is distributed in the hope that it will be useful,\r
8 but WITHOUT ANY WARRANTY; without even the implied warranty of\r
9 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\r
10 See the GNU General Public Lic\r
11 See the GNU General Public License for more details.\r
12 You should have received a copy of the GNU General Public License\r
13 along with this program; if not, write to the Free Software\r
14 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\r
15 */\r
16 \r
17 // ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\r
18 // ³                  The VergeC Compiler version 2.01                   ³\r
19 // ³              Copyright (C)1998 BJ Eirich (aka vecna)                ³\r
20 // ³                  Standard Function  Library module                  ³\r
21 // ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\r
22 \r
23 #include <stdio.h>\r
24 #include <stdlib.h>\r
25 #include <string.h>\r
26 #include "compile.h"\r
27 #include "funclib.h"\r
28 #include "vcc.h"\r
29 #include "vccode.h"\r
30 #include "lexical.h"\r
31 \r
32 // ================================= Data ====================================\r
33 \r
34 // ================================= Code ====================================\r
35 \r
36 void vcfunc_Exit()\r
37 {\r
38   EmitC(1);\r
39   Expect("(");\r
40   HandleString();\r
41   Expect(")");\r
42 }\r
43 \r
44 void Message()\r
45 {\r
46   EmitC(2);\r
47   Expect("(");\r
48   HandleString();\r
49   Expect(",");\r
50   EmitOperand();\r
51   Expect(")");\r
52 }\r
53 \r
54 void vc_loadimage()\r
55 {\r
56   EmitC(6);\r
57   Expect("(");\r
58   HandleString();\r
59   Expect(")");\r
60 }\r
61 \r
62 void vc_AllocateEntity()\r
63 {\r
64   EmitC(11);\r
65   Expect("(");\r
66   EmitOperand();\r
67   Expect(",");\r
68   EmitOperand();\r
69   Expect(",");\r
70   HandleString();\r
71   Expect(")");\r
72 }\r
73 \r
74 void vc_Map()\r
75 {\r
76   EmitC(13);\r
77   Expect("(");\r
78   HandleString();\r
79   Expect(")");\r
80 }\r
81 \r
82 void vc_LoadFont()\r
83 {\r
84   EmitC(14);\r
85   Expect("(");\r
86   HandleString();\r
87   Expect(")");\r
88 }\r
89 \r
90 void vc_PlayFLI()\r
91 {\r
92   EmitC(15);\r
93   Expect("(");\r
94   HandleString();\r
95   Expect(")");\r
96 }\r
97 \r
98 void vc_PrintString()\r
99 {\r
100   EmitC(17);\r
101   Expect("(");\r
102   EmitOperand();\r
103   Expect(",");\r
104   HandleString();\r
105   Expect(")");\r
106 }\r
107 \r
108 void vc_LoadRaw()\r
109 {\r
110   EmitC(18);\r
111   Expect("(");\r
112   HandleString();\r
113   Expect(")");\r
114 }\r
115 \r
116 void vc_EntityMove()\r
117 {\r
118   EmitC(25);\r
119   Expect("(");\r
120   EmitOperand();\r
121   Expect(",");\r
122   HandleString();\r
123   Expect(")");\r
124 }\r
125 \r
126 void vc_strlen()\r
127 {\r
128   EmitC(33);\r
129   Expect("(");\r
130   HandleString();\r
131   Expect(")");\r
132 }\r
133 \r
134 void vc_strcmp()\r
135 {\r
136   EmitC(34);\r
137   Expect("(");\r
138   HandleString();\r
139   Expect(",");\r
140   HandleString();\r
141   Expect(")");\r
142 }\r
143 \r
144 void vc_SetRString()\r
145 {\r
146   EmitC(47);\r
147   Expect("(");\r
148   HandleString();\r
149   Expect(")");\r
150 }\r
151 \r
152 void vc_PartyMove()\r
153 {\r
154   EmitC(51);\r
155   Expect("(");\r
156   HandleString();\r
157   Expect(")");\r
158 }\r
159 \r
160 void vc_PlayMusic()\r
161 {\r
162   EmitC(62);\r
163   Expect("(");\r
164   HandleString();\r
165   Expect(")");\r
166 }\r
167 \r
168 void vc_OpenFile()\r
169 {\r
170   EmitC(65);\r
171   Expect("(");\r
172   HandleString();\r
173   Expect(")");\r
174 }\r
175 \r
176 void vc_HookRetrace()\r
177 {\r
178   char *na;\r
179 \r
180   EmitC(44);\r
181   Expect("(");\r
182   na=src;\r
183   GetToken();\r
184   if (token_subtype == op_UFUNC)\r
185   {\r
186     EmitC(2);\r
187     EmitD(funcidx);\r
188   }\r
189   else\r
190   {\r
191     src=na;\r
192     EmitC(1);\r
193     EmitOperand();\r
194   }\r
195   Expect(")");\r
196 }\r
197 \r
198 void vc_HookTimer()\r
199 {\r
200   char *na;\r
201 \r
202   EmitC(45);\r
203   Expect("(");\r
204   na=src;\r
205   GetToken();\r
206   if (token_subtype == op_UFUNC)\r
207   {\r
208     EmitC(2);\r
209     EmitD(funcidx);\r
210   }\r
211   else\r
212   {\r
213     src=na;\r
214     EmitC(1);\r
215     EmitOperand();\r
216   }\r
217   Expect(")");\r
218 }\r
219 \r
220 void vc_HookKey()\r
221 {\r
222   char *na;\r
223 \r
224   EmitC(61);\r
225   Expect("(");\r
226   EmitOperand();\r
227   Expect(",");\r
228   na=src;\r
229   GetToken();\r
230   if (token_subtype == op_UFUNC)\r
231   {\r
232     EmitC(2);\r
233     EmitD(funcidx);\r
234   }\r
235   else\r
236   {\r
237     src=na;\r
238     EmitC(1);\r
239     EmitOperand();\r
240   }\r
241   Expect(")");\r
242 }\r
243 \r
244 void vc_QuickRead()\r
245 {\r
246   EmitC(67);\r
247   Expect("(");\r
248   HandleString();\r
249   Expect(",");\r
250   GetToken();\r
251   if (varcategory == op_STRING)\r
252   {\r
253     EmitC(op_STRING);\r
254     EmitW(str[varidx].vsofs);\r
255     Expect(",");\r
256     EmitOperand();\r
257     Expect(")");\r
258     return;\r
259   }\r
260   if (varcategory == op_SARRAY)\r
261   {\r
262     EmitC(op_SARRAY);\r
263     EmitW(str[varidx].vsofs);\r
264     Expect("[");\r
265     EmitOperand();\r
266     Expect("]");\r
267     Expect(",");\r
268     EmitOperand();\r
269     Expect(")");\r
270     return;\r
271   }\r
272   vcerr("String variable expected.");\r
273 }\r
274 \r
275 void vc_CacheSound()\r
276 {\r
277   EmitC(74);\r
278   Expect("(");\r
279   HandleString();\r
280   Expect(")");\r
281 }\r
282 \r
283 void vc_val()\r
284 {\r
285   EmitC(80);\r
286   Expect("(");\r
287   HandleString();\r
288   Expect(")");\r
289 }\r
290 \r
291 void vc_Log()\r
292 {\r
293   EmitC(83);\r
294   Expect("(");\r
295   HandleString();\r
296   Expect(")");\r
297 }\r
298 \r
299 void vc_fgetline()\r
300 {\r
301   EmitC(90);\r
302   Expect("(");\r
303   GetToken();\r
304   if (varcategory == op_STRING)\r
305   {\r
306     EmitC(op_STRING);\r
307     EmitW(str[varidx].vsofs);\r
308     Expect(",");\r
309     EmitOperand();\r
310     Expect(")");\r
311     return;\r
312   }\r
313   if (varcategory == op_SARRAY)\r
314   {\r
315     EmitC(op_SARRAY);\r
316     EmitW(str[varidx].vsofs);\r
317     Expect("[");\r
318     EmitOperand();\r
319     Expect("]");\r
320     Expect(",");\r
321     EmitOperand();\r
322     Expect(")");\r
323     return;\r
324   }\r
325   vcerr("String variable expected.");\r
326 }\r
327 \r
328 void vc_fgettoken()\r
329 {\r
330   EmitC(91);\r
331   Expect("(");\r
332   GetToken();\r
333   if (varcategory == op_STRING)\r
334   {\r
335     EmitC(op_STRING);\r
336     EmitW(str[varidx].vsofs);\r
337     Expect(",");\r
338     EmitOperand();\r
339     Expect(")");\r
340     return;\r
341   }\r
342   if (varcategory == op_SARRAY)\r
343   {\r
344     EmitC(op_SARRAY);\r
345     EmitW(str[varidx].vsofs);\r
346     Expect("[");\r
347     EmitOperand();\r
348     Expect("]");\r
349     Expect(",");\r
350     EmitOperand();\r
351     Expect(")");\r
352     return;\r
353   }\r
354   vcerr("String variable expected.");\r
355 }\r
356 \r
357 void vc_fwritestring()\r
358 {\r
359   EmitC(92);\r
360   Expect("(");\r
361   HandleString();\r
362   Expect(",");\r
363   EmitOperand();\r
364   Expect(")");\r
365 }\r
366 \r
367 void vc_frename()\r
368 {\r
369   EmitC(94);\r
370   Expect("(");\r
371   HandleString();\r
372   Expect(",");\r
373   HandleString();\r
374   Expect(")");\r
375 }\r
376 \r
377 void vc_fdelete()\r
378 {\r
379   EmitC(95);\r
380   Expect("(");\r
381   HandleString();\r
382   Expect(")");\r
383 }\r
384 \r
385 void vc_fwopen()\r
386 {\r
387   EmitC(96);\r
388   Expect("(");\r
389   HandleString();\r
390   Expect(")");\r
391 }\r
392 \r
393 void vc_asc()\r
394 {\r
395   EmitC(106);\r
396   Expect("(");\r
397   HandleString();\r
398   Expect(")");\r
399 }\r
400 \r
401 void vc_NumForScript()\r
402 {\r
403   EmitC(108);\r
404   Expect("(");\r
405   GetToken();\r
406   if (token_subtype == op_UFUNC)\r
407     EmitD(funcidx);\r
408   else vcerr("system script expected.");\r
409   Expect(")");\r
410 }\r
411 \r
412 void vc_FileSize()\r
413 {\r
414   EmitC(109);\r
415   Expect("(");\r
416   HandleString();\r
417   Expect(")");\r
418 }\r
419 \r
420 void GenericFunc(unsigned char idcode, int numargs)\r
421 { char i;\r
422 \r
423   EmitC(idcode);\r
424   if (!numargs)\r
425   {\r
426     Expect("(");\r
427     Expect(")");\r
428     return;\r
429   }\r
430   if (numargs==1)\r
431   {\r
432     Expect("(");\r
433     EmitOperand();\r
434     Expect(")");\r
435     return;\r
436   }\r
437   Expect("(");\r
438   for (i=1; i<numargs; i++)\r
439   {\r
440      EmitOperand();\r
441      Expect(",");\r
442   }\r
443   EmitOperand();\r
444   Expect(")");\r
445 }\r