vlp-10 using coding style in nonstand.c
authorRafał Długołęcki <kontakt@dlugolecki.net.pl>
Wed, 24 Jul 2013 09:12:25 +0000 (11:12 +0200)
committerRafał Długołęcki <kontakt@dlugolecki.net.pl>
Wed, 24 Jul 2013 09:12:25 +0000 (11:12 +0200)
src/int/nonstand.c

index 37fee55b4cefb4e709f18a09fc744e82be3dcb51..6c05361d13d2208eef26c6ce8a5109e19e1829ce 100644 (file)
  * Almost totaly implementation dependent.
  */
 
-bool graphmode = FALSE;                        /* TRUE iff graphics mode active */
+/** TRUE if graphics mode active */
+bool graphmode = FALSE;
 param_struct par;
 
 char *s;
 char ss[255];
-char ii[50],ff[50];
-int scc,lastmsg;
+char ii[50], ff[50];
+int scc, lastmsg;
 
 int wait_for_key()
 {
- G_MESSAGE msg;
-
- bzero(&msg,sizeof(G_MESSAGE));
- while ((msg.msg_type != MSG_GRAPH) && (msg.param.pword[0] != GRAPH_INKEY_RESPONSE))
-{ read_from_graph(&msg);
-  
- }
- return(msg.param.pword[3]);
-}
+       G_MESSAGE msg;
 
+       bzero(&msg,sizeof(G_MESSAGE));
+       while ((msg.msg_type != MSG_GRAPH) &&
+                               (msg.param.pword[0] != GRAPH_INKEY_RESPONSE)) {
+               read_from_graph(&msg);
+       }
+       return(msg.param.pword[3]);
+}
 
-void nonstandard(nrproc)               /* Call (non)standard procedure */
-word nrproc;
+/**
+ * Call (non)standard procedure
+ */
+void nonstandard(word nrproc)
 {
+       word am;
+       int cnt = 0;
+       float r1, r2;
+       word ax, bx, cx, dx, i, t1, t2;
+       unsigned int v, p, h, l, r, c, sc;
+       unsigned int Res_graph_X,Res_graph_Y;
+       G_MESSAGE msg;
+       MESSAGE msg1;
+
+       switch ((int) nrproc) {
+       case GRON:
+       case GROFF:
+               break;
+
+       case CLS: msg.msg_type = MSG_GRAPH;
+               msg.param.pword[0] = GRAPH_CLEAR;
+               msg.param.pword[1] = GraphRes;
+               send_to_graph(&msg);
+               break;
+
+       case POINT:
+               msg.msg_type = MSG_GRAPH;
+               msg.param.pword[0] = GRAPH_POINT;
+               msg.param.pword[1] = GraphRes;
+               msg.param.pword[3] = param[0].xword;
+               msg.param.pword[4] = param[1].xword;
+               send_to_graph(&msg);
+               break;
 
-   word am;
-   int cnt=0;
-   float r1, r2;
-   word ax,bx,cx,dx,i,t1,t2;
-   unsigned int v,p,h,l,r,c,sc;
-   unsigned int Res_graph_X,Res_graph_Y;
-   G_MESSAGE msg;
-   MESSAGE msg1;
-
-
-   switch ((int) nrproc)
-    {
-        case GRON :
-               case GROFF :break;
-
-       case CLS : msg.msg_type = MSG_GRAPH;
-                   msg.param.pword[0] = GRAPH_CLEAR;
-                   msg.param.pword[1] = GraphRes;
-                   send_to_graph(&msg);
-        break; 
-
-       case POINT :
-                msg.msg_type = MSG_GRAPH;
-                 msg.param.pword[0]=GRAPH_POINT;
-                 msg.param.pword[1] = GraphRes;
-                 msg.param.pword[3]=param[0].xword;
-                 msg.param.pword[4]=param[1].xword;
-                 send_to_graph(&msg);
+       case MOVE:
+               msg.msg_type = MSG_GRAPH;
+               msg.param.pword[0] = GRAPH_MOVE;
+               msg.param.pword[1] = GraphRes;
+               msg.param.pword[2] = param[0].xword;
+               msg.param.pword[3] = param[1].xword;
+               send_to_graph(&msg);
                break;
-       case MOVE :
-                msg.msg_type = MSG_GRAPH;
-                 msg.param.pword[0]=GRAPH_MOVE;
-                 msg.param.pword[1] = GraphRes;
-                 msg.param.pword[2]=param[0].xword;
-                 msg.param.pword[3]=param[1].xword;
-                 send_to_graph(&msg);
+
+       case DRAW:
+               msg.msg_type = MSG_GRAPH;
+               msg.param.pword[0] = GRAPH_LINETO;
+               msg.param.pword[1] = GraphRes;
+               msg.param.pword[3] = param[0].xword;
+               msg.param.pword[4] = param[1].xword;
+               send_to_graph(&msg);
                break;
-               
-       case DRAW :
-                msg.msg_type = MSG_GRAPH;
-                 msg.param.pword[0]=GRAPH_LINETO;
-                 msg.param.pword[1] = GraphRes;
-                 msg.param.pword[3]=param[0].xword;
-                 msg.param.pword[4]=param[1].xword;
-                 send_to_graph(&msg);
-               break;
-               
-       case INXPOS :
-                msg.msg_type = MSG_GRAPH;
-                 msg.param.pword[0]=GRAPH_CURPOS;
-                 msg.param.pword[1] = GraphRes;                 
-                 send_to_graph(&msg);
-                 while ((msg.msg_type!=MSG_GRAPH)&&(msg.param.pword[0]!=GRAPH_CURPOS_RESPONSE))
-                  read_from_graph(&msg);
-                param[0].xword = msg.param.pword[3];
+
+       case INXPOS:
+               msg.msg_type = MSG_GRAPH;
+               msg.param.pword[0] = GRAPH_CURPOS;
+               msg.param.pword[1] = GraphRes;
+               send_to_graph(&msg);
+               while ((msg.msg_type != MSG_GRAPH) && 
+                               (msg.param.pword[0] != GRAPH_CURPOS_RESPONSE))
+                       read_from_graph(&msg);
+
+               param[0].xword = msg.param.pword[3];
                break;
        
-       case INYPOS :
-                 msg.msg_type = MSG_GRAPH;
-                 msg.param.pword[0]=GRAPH_CURPOS;
-                 msg.param.pword[1] = GraphRes;                 
-                 send_to_graph(&msg);
-                 while ((msg.msg_type!=MSG_GRAPH)||(msg.param.pword[0]!=GRAPH_CURPOS_RESPONSE))
-                  read_from_graph(&msg);
-                 param[0].xword = msg.param.pword[4];
+       case INYPOS:
+               msg.msg_type = MSG_GRAPH;
+               msg.param.pword[0] = GRAPH_CURPOS;
+               msg.param.pword[1] = GraphRes;
+               send_to_graph(&msg);
+               while ((msg.msg_type != MSG_GRAPH) ||
+                               (msg.param.pword[0] != GRAPH_CURPOS_RESPONSE))
+                       read_from_graph(&msg);
+
+               param[0].xword = msg.param.pword[4];
                break;
        
-        case HFILL :
-                 break;
-        case VFILL :
-                       break;
-               
-        case HASCII :
-                        msg.msg_type = MSG_GRAPH;
-                        msg.param.pword[0]=GRAPH_HASCII;
-                        msg.param.pword[1]=param[0].xword;
-                        send_to_graph(&msg);
-                       break;
-               
-        case COLOR :
-                 msg.msg_type = MSG_GRAPH;
-                 msg.param.pword[0]=GRAPH_FOREGROUND;
-                 msg.param.pword[1] = GraphRes;                 
-                 msg.param.pword[3] = param[0].xword;
-                 send_to_graph(&msg);
-              break;
-               
-        case BORDER :
-                 msg.msg_type = MSG_GRAPH;
-                 msg.param.pword[0]=GRAPH_BACKGROUND;
-                 msg.param.pword[1] = GraphRes;                 
-                 msg.param.pword[3] = param[0].xword;
-                 send_to_graph(&msg);
-               break;
-               
-        case STYLE :
-                break;
-               
-       case INPIX :
+       case HFILL:
+               break;
+       case VFILL:
                break;
 
-       case OUTSTRING :
-                msg.msg_type = MSG_GRAPH;
-                 msg.param.pword[0]=GRAPH_OUTSTRING;
-                 msg.param.pword[1] = GraphRes;                 
-                 msg.param.pword[2] = param[0].xword;
-                 msg.param.pword[3] = param[1].xword;
-                 msg.param.pword[4] = param[3].xword;
-                 msg.param.pword[5] = param[4].xword; 
-                {
-                s= (char *)(M + strings + param[ 2 ].xword + 1);
-                 strcpy(msg.param.pstr,s);
-                 send_to_graph(&msg);
-                 }
-                 break;
-
-       case GETMAP :
-               msg.msg_type = MSG_GRAPH;
-               msg.param.pword[0] = GRAPH_GETMAP;
-               msg.param.pword[1] = GraphRes;
-               msg.param.pword[2] = param[0].xword;
-               msg.param.pword[3] = param[1].xword;
-               send_to_graph(&msg);
-               while ((msg.msg_type!=MSG_GRAPH)||(msg.param.pword[0]!=GRAPH_GETMAP_RESPONSE))
-               read_from_graph(&msg);
-               
-               {
-                int map;
-                
-                map =msg.param.pword[2]; 
-                newarry((word) 1, 3, (word)AINT, &param[ 2 ].xvirt, &am);
-               M[ am+3 ] = map;
-               M[ am+4 ] = msg.param.pword[3];
-               M[ am+5 ] = msg.param.pword[4];
-
-               }
-        break;
-         
-        
-       case PUTMAP :
-        if (member(&param[ 0 ].xvirt, &am)){
-             msg.msg_type = MSG_GRAPH;
-             msg.param.pword[0] = GRAPH_PUTMAP;
-             msg.param.pword[1] = GraphRes;
-             msg.param.pword[2] = M[am+3];
-             msg.param.pword[4] = M[am+4];
-             msg.param.pword[5] = M[am+5];
-             send_to_graph(&msg);
-          }   
-        break;
-        
-       case ORMAP :
-       case XORMAP :break;
-               
-
-       case PATERN :
-                msg.msg_type = MSG_GRAPH;
-                 msg.param.pword[0]=GRAPH_RECT;
-                 msg.param.pword[1] = GraphRes;
-                 msg.param.pword[3] = param[0].xword;
-                 msg.param.pword[4] = param[1].xword;
-                 msg.param.pword[5] = param[2].xword;
-                 msg.param.pword[6] = param[3].xword;
-                 msg.param.pword[7] = param[4].xword; 
-                 msg.param.pword[8] = param[5].xword;
-                 send_to_graph(&msg);                                                                                                  break;
-        case PALLET:break;             
-       
-       case TRACK :
-                msg.msg_type = MSG_GRAPH;
-                msg.param.pword[0] = GRAPH_WRITEINTXY;
-                msg.param.pword[1] = GraphRes;
-                msg.param.pword[2] = param[0].xword;
-                msg.param.pword[3] = param[1].xword;
-                msg.param.pword[4] = param[4].xword;
-                msg.param.pword[5] = param[2].xword; 
-               send_to_graph(&msg);    
-                break;
-
-       case INKEY :
-                msg.msg_type = MSG_GRAPH;
-                 msg.param.pword[0]=GRAPH_INKEY;
-                 msg.param.pword[1] = GraphRes;                 
-                 send_to_graph(&msg);
-                 param[0].xword = wait_for_key();
-                    break;
-
-
-       case CIRB :
-                msg.msg_type = MSG_GRAPH;
-                msg.param.pword[0]=GRAPH_ELLIPSE;
-                msg.param.pword[1] = GraphRes;                 
-                msg.param.pword[3]=param[0].xword; msg.param.pword[4]=param[1].xword;       
-                msg.param.pword[5]=param[2].xword; msg.param.pword[6]=param[3].xword;
-                msg.param.pword[7]=(double)param[4].xword;
-                msg.param.pword[8]=(double) param[5].xword;
-                msg.param.pword[9]=param[7].xword;
-                send_to_graph(&msg);
+       case HASCII:
+               msg.msg_type = MSG_GRAPH;
+               msg.param.pword[0] = GRAPH_HASCII;
+               msg.param.pword[1] = param[0].xword;
+               send_to_graph(&msg);
                break;
 
-        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,&param[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,&param[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,&param[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,
-                                         &param[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,&param[8].xvirt,&ax);
-                     ax+=3;
-                     M[ax++]=atoi(msg.param.pstr);
-                    }
-                    else
-                    if (lastmsg==-306) // Read char
-                    {
-                     newarry((word)0,10,(word)AINT,&param[8].xvirt,&ax);
-                     ax+=3;
-                     M[ax++]=msg.param.pchar;
-                    }
-                    else
-                    if (lastmsg==-307) // Read real
-                    {
-                     newarry((word)0,10,(word)AINT,&param[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,&param[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,
-                         &param[8].xvirt,&ax);
-                       ax+=3;
-                       s=msg.param.pstr;
-                      while(*s!='\0')
-                       M[ax++]=*(s++);
-                     }
-                   }
-                   } /* graphic */
-                   break;
-
-       case INIT :
-       
+       case COLOR:
+               msg.msg_type = MSG_GRAPH;
+               msg.param.pword[0] = GRAPH_FOREGROUND;
+               msg.param.pword[1] = GraphRes;
+               msg.param.pword[3] = param[0].xword;
+               send_to_graph(&msg);
                break;
-       
-       case STATUS :
-                       break;
-       
-       case GETPRESS :
-                msg.msg_type = MSG_GRAPH;
-                 msg.param.pword[0]=GRAPH_MGETPRESS;
-                 msg.param.pword[1] = GraphRes;                 
-                 send_to_graph(&msg);
-                 while (1)
-                 {
-                    read_from_graph(&msg);
-                    if ( (msg.msg_type==MSG_GRAPH)&&(msg.param.pword[0]==GRAPH_MGETPRESS_RESPONSE)) break;
-                 }
-                 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[4].xword = msg.param.pword[6];
-                 param[5].xword = msg.param.pword[7];
+
+       case BORDER:
+               msg.msg_type = MSG_GRAPH;
+               msg.param.pword[0] = GRAPH_BACKGROUND;
+               msg.param.pword[1] = GraphRes;
+               msg.param.pword[3] = param[0].xword;
+               send_to_graph(&msg);
                break;
 
-                      
-                       break;
-       case GETRELEASE :
-                       break;
-       
-       case SHOWCURSOR :
-       case HIDECURSOR :
-       case SETPOSITION :
-       case SETWINDOW :
-       case DEFCURSOR :
-       case SETSPEED :
-       case SETMARGINS :
-       case SETTHRESHOLD :
+       case STYLE:
+               break;
+
+       case INPIX:
+               break;
+
+       case OUTSTRING:
+               msg.msg_type = MSG_GRAPH;
+               msg.param.pword[0] = GRAPH_OUTSTRING;
+               msg.param.pword[1] = GraphRes;
+               msg.param.pword[2] = param[0].xword;
+               msg.param.pword[3] = param[1].xword;
+               msg.param.pword[4] = param[3].xword;
+               msg.param.pword[5] = param[4].xword; 
+               {
+                       s= (char *)(M + strings + param[ 2 ].xword + 1);
+                       strcpy(msg.param.pstr,s);
+                       send_to_graph(&msg);
+               }
                break;
 
-       case GETMOVEMENT :
-                               break;
+       case GETMAP:
+               msg.msg_type = MSG_GRAPH;
+               msg.param.pword[0] = GRAPH_GETMAP;
+               msg.param.pword[1] = GraphRes;
+               msg.param.pword[2] = param[0].xword;
+               msg.param.pword[3] = param[1].xword;
+               send_to_graph(&msg);
+               while ((msg.msg_type != MSG_GRAPH) || 
+                               (msg.param.pword[0] != GRAPH_GETMAP_RESPONSE))
+                       read_from_graph(&msg);
+               {
+                       int map;
+
+                       map = msg.param.pword[2]; 
+                       newarry((word) 1, 3, (word)AINT, &param[2].xvirt, &am);
+                       M[am + 3] = map;
+                       M[am + 4] = msg.param.pword[3];
+                       M[am + 5] = msg.param.pword[4];
+               }
+               break;
 
+       case PUTMAP:
+               if (member(&param[0].xvirt, &am)) {
+                       msg.msg_type = MSG_GRAPH;
+                       msg.param.pword[0] = GRAPH_PUTMAP;
+                       msg.param.pword[1] = GraphRes;
+                       msg.param.pword[2] = M[am + 3];
+                       msg.param.pword[4] = M[am + 4];
+                       msg.param.pword[5] = M[am + 5];
+                       send_to_graph(&msg);
+               }
+               break;
 
+       case ORMAP:
+       case XORMAP:
+               break;
 
+       case PATERN:
+               msg.msg_type = MSG_GRAPH;
+               msg.param.pword[0] = GRAPH_RECT;
+               msg.param.pword[1] = GraphRes;
+               msg.param.pword[3] = param[0].xword;
+               msg.param.pword[4] = param[1].xword;
+               msg.param.pword[5] = param[2].xword;
+               msg.param.pword[6] = param[3].xword;
+               msg.param.pword[7] = param[4].xword; 
+               msg.param.pword[8] = param[5].xword;
+               send_to_graph(&msg);
+               break;
+       case PALLET:
+               break;
 
-       default  :
-               errsignal(RTEUNSTP);
-    }
+       case TRACK:
+               msg.msg_type = MSG_GRAPH;
+               msg.param.pword[0] = GRAPH_WRITEINTXY;
+               msg.param.pword[1] = GraphRes;
+               msg.param.pword[2] = param[0].xword;
+               msg.param.pword[3] = param[1].xword;
+               msg.param.pword[4] = param[4].xword;
+               msg.param.pword[5] = param[2].xword; 
+               send_to_graph(&msg);
+               break;
+
+       case INKEY:
+               msg.msg_type = MSG_GRAPH;
+               msg.param.pword[0] = GRAPH_INKEY;
+               msg.param.pword[1] = GraphRes;
+               send_to_graph(&msg);
+               param[0].xword = wait_for_key();
+               break;
+
+       case CIRB:
+               msg.msg_type = MSG_GRAPH;
+               msg.param.pword[0] = GRAPH_ELLIPSE;
+               msg.param.pword[1] = GraphRes;
+               msg.param.pword[3] = param[0].xword;
+               msg.param.pword[4] = param[1].xword;
+               msg.param.pword[5] = param[2].xword;
+               msg.param.pword[6] = param[3].xword;
+               msg.param.pword[7] = (double)param[4].xword;
+               msg.param.pword[8] = (double)param[5].xword;
+               msg.param.pword[9] = param[7].xword;
+               send_to_graph(&msg);
+               break;
+
+       /* ___________ magic library ____________ */
+       case HFONT8:
+               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.msg_type = MSG_GRAPH;
+                       msg.param.pword[0] = GRAPH_MAGIC;
+                       msg.param.pword[1] = param[0].xword; /* Lookout! */
+                       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;
+
+                       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;
+                       msg1.param.pword[5] = param[5].xword;
+                       msg1.param.pword[6] = param[6].xword;
+                       msg1.param.pword[7] = param[7].xword;
+                       s = (char *)(M + strings + param[4].xword + 1);
+                       strcpy(msg1.param.pstr, s);
+
+                       /* Machine class */
+                       switch(msg1.param.pword[1]) {
+                       /* get local node */
+                       case 501:
+                               newarry((word)0, 2, (word)AINT, &param[8].xvirt,
+                                                                       &ax);
+                               ax += 3;
+                               M[ax++] = my_ctx.node;
+                               break;
+                       /* number of nodes */
+                       case 502:
+                               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, &param[8].xvirt, &ax);
+                               ax += 3;
+                               M[ax++] = msg1.param.pword[1];
+                               break;
+                       /* node exists */
+                       case 503:
+                               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, &param[8].xvirt, &ax);
+                               ax += 3;
+                               M[ax++] = msg1.param.pword[1];
+                               break;
+                       /* get nodes info */
+                       case 504:
+                               {
+                               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, &param[8].xvirt, &ax);
+                               ax += 3;
+                               s = ss;
+                               while(*s!='\0')
+                                       M[ax++]=*(s++);
+
+                               };
+                               break;
+
+                       }
+               }
+               /* graphic */
+               else {
+                       msg.msg_type = MSG_GRAPH;
+                       msg.param.pword[0] = GRAPH_MAGIC;
+                       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.param.pword[6] = param[6].xword;
+                       msg.param.pword[7] = param[7].xword;
+                       s= (char *)(M + strings + param[ 4 ].xword + 1);
+                       strcpy(msg.param.pstr,s);
+
+
+                       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);
 
+                                // Read integer
+                               if (lastmsg == -305) {
+                                       newarry((word)0, 10, (word)AINT, &param[8].xvirt, &ax);
+                                       ax += 3;
+                                       M[ax++] = atoi(msg.param.pstr);
+                               }
+                               // Read char
+                               else if (lastmsg == -306) {
+                                       newarry((word)0, 10, (word)AINT, &param[8].xvirt, &ax);
+                                       ax += 3;
+                                       M[ax++] = msg.param.pchar;
+                               }
+                               // Read real
+                               else if (lastmsg == -307) {
+                                       newarry((word)0, 10, (word)AINT, &param[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, &param[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, &param[8].xvirt, &ax);
+                                       ax += 3;
+                                       s = msg.param.pstr;
+                                       while(*s != '\0')
+                                               M[ax++] = *(s++);
+                               }
+                       }
+               }
+               break;
+
+       case INIT:
+               break;
+
+       case STATUS:
+               break;
+
+       case GETPRESS :
+               msg.msg_type = MSG_GRAPH;
+               msg.param.pword[0] = GRAPH_MGETPRESS;
+               msg.param.pword[1] = GraphRes;
+               send_to_graph(&msg);
+               while (1) {
+                       read_from_graph(&msg);
+                       if ((msg.msg_type == MSG_GRAPH) &&
+                               (msg.param.pword[0] == GRAPH_MGETPRESS_RESPONSE))
+                               break;
+               }
+               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[4].xword = msg.param.pword[6];
+               param[5].xword = msg.param.pword[7];
+               break;
+
+       case GETRELEASE:
+               break;
+
+       case SHOWCURSOR:
+       case HIDECURSOR:
+       case SETPOSITION:
+       case SETWINDOW:
+       case DEFCURSOR:
+       case SETSPEED:
+       case SETMARGINS:
+       case SETTHRESHOLD:
+               break;
+
+       case GETMOVEMENT:
+               break;
+
+       default:
+               errsignal(RTEUNSTP);
+       }
 }