- case HFONT8: /* ___________ magic library ____________ */
-
- if (param[0].xword==1000)
- {
- strcpy(ss,"");
- } else
- if (param[0].xword==1001)
- {
- sprintf(ss,"%s%c",ss,(char)(param[1].xword));
- } else
- if (param[0].xword==303)
- {
- msg.param.pword[1] = param[0].xword;
- msg.param.pword[2] = param[1].xword;
- msg.param.pword[3] = param[2].xword;
- msg.param.pword[4] = param[3].xword;
- msg.param.pword[5] = param[5].xword;
- msg.msg_type = MSG_GRAPH;
- msg.param.pword[0] = GRAPH_MAGIC;
- strcpy(msg.param.pstr,ss);
- send_to_graph(&msg);
- } else
- if (param[0].xword>500)
- {
- msg1.param.pword[1] = param[0].xword;
- msg1.param.pword[2] = param[1].xword;
- msg1.param.pword[3] = param[2].xword;
- msg1.param.pword[4] = param[3].xword;
- s= (char *)(M + strings + param[ 4 ].xword + 1);
- strcpy(msg1.param.pstr,s);
- msg1.param.pword[5] = param[5].xword;
- msg1.param.pword[6] = param[6].xword;
- msg1.param.pword[7] = param[7].xword;
-
- switch(msg1.param.pword[1]) /* Machine class */
- {
- case 501: /* get local node */
- newarry((word)0,2,(word)AINT,¶m[8].xvirt,&ax);
- ax+=3;
- M[ax++]=my_ctx.node;
- break;
- case 502: /* number of nodes */
- msg1.msg_type = MSG_NET;
- msg1.param.pword[0]=NET_NODES_NUM;
- write(net_sock,&msg1,sizeof(MESSAGE));
- while ((msg1.msg_type!=MSG_NET) || (msg1.param.pword[0]!=NET_NODES_NUM_RESPONSE) )
- read_from_net(&msg1);
- newarry((word)0,2,(word)AINT,¶m[8].xvirt,&ax);
- ax+=3;
- M[ax++]=msg1.param.pword[1];
- break;
- case 503: /* node exists */
- msg1.msg_type = MSG_NET;
- msg1.param.pword[0]=NET_NODE_EXIST;
- msg1.param.pword[1]=msg1.param.pword[2];
- write(net_sock,&msg1,sizeof(MESSAGE));
- bzero(&msg1,sizeof(msg1));
- while ((msg1.msg_type!=MSG_NET) || (msg1.param.pword[0]!=NET_NODE_EXIST) )
- read_from_net(&msg1);
- newarry((word)0,2,(word)AINT,¶m[8].xvirt,&ax);
- ax+=3;
- M[ax++]=msg1.param.pword[1];
- break;
- case 504: /* get nodes info */
- {
- char ss[1024];
- strcpy(ss,"");
- msg1.msg_type = MSG_NET;
- msg1.param.pword[0]=NET_GET_INFO;
- write(net_sock,&msg1,sizeof(MESSAGE));
- while ( (msg1.msg_type!=MSG_NET) ||(msg1.param.pword[0]!=NET_INFO_END) )
- {
- read_from_net(&msg1);
- if (msg1.param.pword[0]==NET_INFO)
- strcat(ss,msg1.param.pstr);
- }
- newarry((word)0,strlen(ss),(word)AINT,
- ¶m[8].xvirt,&ax);
- ax+=3;
- s=ss;
- while(*s!='\0')
- M[ax++]=*(s++);
- } ;break;
-
-
- }/* switch */
- }
- else
- { /* graphic */
-
- msg.param.pword[1] = param[0].xword;
- msg.param.pword[2] = param[1].xword;
- msg.param.pword[3] = param[2].xword;
- msg.param.pword[4] = param[3].xword;
- s= (char *)(M + strings + param[ 4 ].xword + 1);
- strcpy(msg.param.pstr,s);
- msg.param.pword[5] = param[5].xword;
- msg.param.pword[6] = param[6].xword;
- msg.param.pword[7] = param[7].xword;
-
- msg.msg_type = MSG_GRAPH;
- msg.param.pword[0] = GRAPH_MAGIC;
-
- send_to_graph(&msg);
-
- if (msg.param.pword[1]<0)
- {
- lastmsg=msg.param.pword[1];
- bzero(&msg,sizeof(G_MESSAGE));
- while (msg.param.pword[0]!=GRAPH_MAGIC_RESPONSE)
- read_from_graph(&msg);
- if (lastmsg==-305) // Read integer
- {
- newarry((word)0,10,(word)AINT,¶m[8].xvirt,&ax);
- ax+=3;
- M[ax++]=atoi(msg.param.pstr);
- }
- else
- if (lastmsg==-306) // Read char
- {
- newarry((word)0,10,(word)AINT,¶m[8].xvirt,&ax);
- ax+=3;
- M[ax++]=msg.param.pchar;
- }
- else
- if (lastmsg==-307) // Read real
- {
- newarry((word)0,10,(word)AINT,¶m[8].xvirt,&ax);
- ax+=3;
- strcpy(ii,"");strcpy(ff,"");sc=0;
- while ((sc<strlen(msg.param.pstr)) && (msg.param.pstr[sc]!='.'))
- {
- ii[sc]=msg.param.pstr[sc];
- sc++;
- }
- ii[sc++]='\0';scc=sc;sc=0;
- while (scc<strlen(msg.param.pstr))
- {
- ff[sc++]=msg.param.pstr[scc++];
- }
- ff[sc]='\0';
- M[ax++]=atoi(ii);
- M[ax++]=atoi(ff);
-
- }
- else
- if (msg.param.pword[1]==1)
- {
- newarry((word)0,10,(word)AINT,¶m[8].xvirt,&ax);
- ax+=3;
- for(l=2;l<7;l++)
- M[ax++]=msg.param.pword[l];
- }
- else
- {
- newarry((word)0,strlen(msg.param.pstr)+2,(word)AINT,
- ¶m[8].xvirt,&ax);
- ax+=3;
- s=msg.param.pstr;
- while(*s!='\0')
- M[ax++]=*(s++);
- }
- }
- } /* graphic */
- break;
-
- case INIT :
-