12 * @brief Call (non)standard procedures.
13 * @brief Almost totaly implementation dependent.
16 /** TRUE if graphics mode active */
17 bool graphmode = FALSE;
29 bzero(&msg,sizeof(G_MESSAGE));
30 while ((msg.msg_type != MSG_GRAPH) &&
31 (msg.param.pword[0] != GRAPH_INKEY_RESPONSE)) {
32 read_from_graph(&msg);
34 return(msg.param.pword[3]);
38 * Call (non)standard procedure
40 void nonstandard(word nrproc)
45 word ax, bx, cx, dx, i, t1, t2;
46 unsigned int v, p, h, l, r, c, sc;
47 unsigned int Res_graph_X,Res_graph_Y;
51 switch ((int) nrproc) {
56 case CLS: msg.msg_type = MSG_GRAPH;
57 msg.param.pword[0] = GRAPH_CLEAR;
58 msg.param.pword[1] = GraphRes;
63 msg.msg_type = MSG_GRAPH;
64 msg.param.pword[0] = GRAPH_POINT;
65 msg.param.pword[1] = GraphRes;
66 msg.param.pword[3] = param[0].xword;
67 msg.param.pword[4] = param[1].xword;
72 msg.msg_type = MSG_GRAPH;
73 msg.param.pword[0] = GRAPH_MOVE;
74 msg.param.pword[1] = GraphRes;
75 msg.param.pword[2] = param[0].xword;
76 msg.param.pword[3] = param[1].xword;
81 msg.msg_type = MSG_GRAPH;
82 msg.param.pword[0] = GRAPH_LINETO;
83 msg.param.pword[1] = GraphRes;
84 msg.param.pword[3] = param[0].xword;
85 msg.param.pword[4] = param[1].xword;
90 msg.msg_type = MSG_GRAPH;
91 msg.param.pword[0] = GRAPH_CURPOS;
92 msg.param.pword[1] = GraphRes;
94 while ((msg.msg_type != MSG_GRAPH) &&
95 (msg.param.pword[0] != GRAPH_CURPOS_RESPONSE))
96 read_from_graph(&msg);
98 param[0].xword = msg.param.pword[3];
102 msg.msg_type = MSG_GRAPH;
103 msg.param.pword[0] = GRAPH_CURPOS;
104 msg.param.pword[1] = GraphRes;
106 while ((msg.msg_type != MSG_GRAPH) ||
107 (msg.param.pword[0] != GRAPH_CURPOS_RESPONSE))
108 read_from_graph(&msg);
110 param[0].xword = msg.param.pword[4];
119 msg.msg_type = MSG_GRAPH;
120 msg.param.pword[0] = GRAPH_HASCII;
121 msg.param.pword[1] = param[0].xword;
126 msg.msg_type = MSG_GRAPH;
127 msg.param.pword[0] = GRAPH_FOREGROUND;
128 msg.param.pword[1] = GraphRes;
129 msg.param.pword[3] = param[0].xword;
134 msg.msg_type = MSG_GRAPH;
135 msg.param.pword[0] = GRAPH_BACKGROUND;
136 msg.param.pword[1] = GraphRes;
137 msg.param.pword[3] = param[0].xword;
148 msg.msg_type = MSG_GRAPH;
149 msg.param.pword[0] = GRAPH_OUTSTRING;
150 msg.param.pword[1] = GraphRes;
151 msg.param.pword[2] = param[0].xword;
152 msg.param.pword[3] = param[1].xword;
153 msg.param.pword[4] = param[3].xword;
154 msg.param.pword[5] = param[4].xword;
156 s= (char *)(M + strings + param[ 2 ].xword + 1);
157 strcpy(msg.param.pstr,s);
163 msg.msg_type = MSG_GRAPH;
164 msg.param.pword[0] = GRAPH_GETMAP;
165 msg.param.pword[1] = GraphRes;
166 msg.param.pword[2] = param[0].xword;
167 msg.param.pword[3] = param[1].xword;
169 while ((msg.msg_type != MSG_GRAPH) ||
170 (msg.param.pword[0] != GRAPH_GETMAP_RESPONSE))
171 read_from_graph(&msg);
175 map = msg.param.pword[2];
176 newarry((word) 1, 3, (word)AINT, ¶m[2].xvirt, &am);
178 M[am + 4] = msg.param.pword[3];
179 M[am + 5] = msg.param.pword[4];
184 if (member(¶m[0].xvirt, &am)) {
185 msg.msg_type = MSG_GRAPH;
186 msg.param.pword[0] = GRAPH_PUTMAP;
187 msg.param.pword[1] = GraphRes;
188 msg.param.pword[2] = M[am + 3];
189 msg.param.pword[4] = M[am + 4];
190 msg.param.pword[5] = M[am + 5];
200 msg.msg_type = MSG_GRAPH;
201 msg.param.pword[0] = GRAPH_RECT;
202 msg.param.pword[1] = GraphRes;
203 msg.param.pword[3] = param[0].xword;
204 msg.param.pword[4] = param[1].xword;
205 msg.param.pword[5] = param[2].xword;
206 msg.param.pword[6] = param[3].xword;
207 msg.param.pword[7] = param[4].xword;
208 msg.param.pword[8] = param[5].xword;
215 msg.msg_type = MSG_GRAPH;
216 msg.param.pword[0] = GRAPH_WRITEINTXY;
217 msg.param.pword[1] = GraphRes;
218 msg.param.pword[2] = param[0].xword;
219 msg.param.pword[3] = param[1].xword;
220 msg.param.pword[4] = param[4].xword;
221 msg.param.pword[5] = param[2].xword;
226 msg.msg_type = MSG_GRAPH;
227 msg.param.pword[0] = GRAPH_INKEY;
228 msg.param.pword[1] = GraphRes;
230 param[0].xword = wait_for_key();
234 msg.msg_type = MSG_GRAPH;
235 msg.param.pword[0] = GRAPH_ELLIPSE;
236 msg.param.pword[1] = GraphRes;
237 msg.param.pword[3] = param[0].xword;
238 msg.param.pword[4] = param[1].xword;
239 msg.param.pword[5] = param[2].xword;
240 msg.param.pword[6] = param[3].xword;
241 msg.param.pword[7] = (double)param[4].xword;
242 msg.param.pword[8] = (double)param[5].xword;
243 msg.param.pword[9] = param[7].xword;
247 /* ___________ magic library ____________ */
249 if (param[0].xword == 1000) {
252 else if (param[0].xword == 1001) {
253 sprintf(ss, "%s%c", ss, (char)(param[1].xword));
255 else if (param[0].xword == 303) {
256 msg.msg_type = MSG_GRAPH;
257 msg.param.pword[0] = GRAPH_MAGIC;
258 msg.param.pword[1] = param[0].xword; /* Lookout! */
259 msg.param.pword[2] = param[1].xword;
260 msg.param.pword[3] = param[2].xword;
261 msg.param.pword[4] = param[3].xword;
262 msg.param.pword[5] = param[5].xword;
264 strcpy(msg.param.pstr, ss);
267 else if (param[0].xword > 500) {
268 msg1.param.pword[1] = param[0].xword;
269 msg1.param.pword[2] = param[1].xword;
270 msg1.param.pword[3] = param[2].xword;
271 msg1.param.pword[4] = param[3].xword;
272 msg1.param.pword[5] = param[5].xword;
273 msg1.param.pword[6] = param[6].xword;
274 msg1.param.pword[7] = param[7].xword;
275 s = (char *)(M + strings + param[4].xword + 1);
276 strcpy(msg1.param.pstr, s);
279 switch(msg1.param.pword[1]) {
282 newarry((word)0, 2, (word)AINT, ¶m[8].xvirt,
285 M[ax++] = my_ctx.node;
287 /* number of nodes */
289 msg1.msg_type = MSG_NET;
290 msg1.param.pword[0] = NET_NODES_NUM;
291 write(net_sock,&msg1,sizeof(MESSAGE));
292 while ((msg1.msg_type != MSG_NET) ||
293 (msg1.param.pword[0] != NET_NODES_NUM_RESPONSE))
294 read_from_net(&msg1);
296 newarry((word)0, 2, (word)AINT, ¶m[8].xvirt, &ax);
298 M[ax++] = msg1.param.pword[1];
302 msg1.msg_type = MSG_NET;
303 msg1.param.pword[0] = NET_NODE_EXIST;
304 msg1.param.pword[1] = msg1.param.pword[2];
305 write(net_sock, &msg1, sizeof(MESSAGE));
306 bzero(&msg1, sizeof(msg1));
307 while ((msg1.msg_type != MSG_NET) ||
308 (msg1.param.pword[0] != NET_NODE_EXIST))
309 read_from_net(&msg1);
311 newarry((word)0, 2, (word)AINT, ¶m[8].xvirt, &ax);
313 M[ax++] = msg1.param.pword[1];
320 msg1.msg_type = MSG_NET;
321 msg1.param.pword[0] = NET_GET_INFO;
322 write(net_sock, &msg1, sizeof(MESSAGE));
323 while ((msg1.msg_type != MSG_NET) ||
324 (msg1.param.pword[0] != NET_INFO_END)) {
325 read_from_net(&msg1);
327 if (msg1.param.pword[0] == NET_INFO)
328 strcat(ss,msg1.param.pstr);
330 newarry((word)0, strlen(ss), (word)AINT, ¶m[8].xvirt, &ax);
343 msg.msg_type = MSG_GRAPH;
344 msg.param.pword[0] = GRAPH_MAGIC;
345 msg.param.pword[1] = param[0].xword;
346 msg.param.pword[2] = param[1].xword;
347 msg.param.pword[3] = param[2].xword;
348 msg.param.pword[4] = param[3].xword;
349 msg.param.pword[5] = param[5].xword;
350 msg.param.pword[6] = param[6].xword;
351 msg.param.pword[7] = param[7].xword;
352 s= (char *)(M + strings + param[ 4 ].xword + 1);
353 strcpy(msg.param.pstr,s);
358 if (msg.param.pword[1] < 0) {
359 lastmsg = msg.param.pword[1];
360 bzero(&msg,sizeof(G_MESSAGE));
361 while (msg.param.pword[0] != GRAPH_MAGIC_RESPONSE)
362 read_from_graph(&msg);
365 if (lastmsg == -305) {
366 newarry((word)0, 10, (word)AINT, ¶m[8].xvirt, &ax);
368 M[ax++] = atoi(msg.param.pstr);
371 else if (lastmsg == -306) {
372 newarry((word)0, 10, (word)AINT, ¶m[8].xvirt, &ax);
374 M[ax++] = msg.param.pchar;
377 else if (lastmsg == -307) {
378 newarry((word)0, 10, (word)AINT, ¶m[8].xvirt, &ax);
383 while ((sc < strlen(msg.param.pstr)) &&
384 (msg.param.pstr[sc] != '.')) {
385 ii[sc]=msg.param.pstr[sc];
391 while (scc<strlen(msg.param.pstr)) {
392 ff[sc++] = msg.param.pstr[scc++];
398 else if (msg.param.pword[1] == 1) {
399 newarry((word)0, 10, (word)AINT, ¶m[8].xvirt, &ax);
401 for(l = 2; l < 7; l++)
402 M[ax++] = msg.param.pword[l];
405 newarry((word)0, strlen(msg.param.pstr) + 2, (word)AINT, ¶m[8].xvirt, &ax);
422 msg.msg_type = MSG_GRAPH;
423 msg.param.pword[0] = GRAPH_MGETPRESS;
424 msg.param.pword[1] = GraphRes;
427 read_from_graph(&msg);
428 if ((msg.msg_type == MSG_GRAPH) &&
429 (msg.param.pword[0] == GRAPH_MGETPRESS_RESPONSE))
432 param[0].xword = msg.param.pword[2];
433 param[1].xword = msg.param.pword[3];
434 param[2].xword = msg.param.pword[4];
435 param[3].xword = msg.param.pword[5];
436 param[4].xword = msg.param.pword[6];
437 param[5].xword = msg.param.pword[7];