home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_01 / MIDICOM.LZH / MC_UTILS / MC_LIB / MC_LIB.H < prev    next >
C/C++ Source or Header  |  1993-10-18  |  5KB  |  148 lines

  1. #include <extdef.h>
  2. #include <string.h>      /* String-Library */
  3. #include <tos.h>
  4.  
  5. /* msg-Konstanten */
  6. #define _ASSIGN       6000  /* Appl meldet sich an   */
  7. #define _GOOD_BYE     6001  /* Appl meldet sich ab   */
  8. #define _SEND_DATA    6002  /* Nutznachricht senden  */
  9. #define _WAIT_TOKEN   6004  /* warte auf token*/
  10. #define _FREE_TOKEN   6005  /* befreie Token  */
  11. #define _UNITIME      6007  /* setze Zeit für ganzen Ring gleich */
  12. #define _STOP_RING    6008
  13. #define _GET_VERW     6009  /* Ring-Karte */
  14. #define _PRKONF       6030
  15.  
  16. typedef struct 
  17.     int   what;
  18.     int   size;
  19.     char  *ptr;
  20.     char  *name;
  21.     int   an;
  22.     int   fill;
  23. } msg_typ;
  24.  
  25. typedef struct
  26. {
  27.   char  *ibuf;  /* Zeiger auf den buffer */
  28.   int   size;    /* groesse des Buffers   */
  29.   int   nw;    /* naechste Leseposition    */
  30.   int   nl;    /* naechste Schreibposition */
  31.   int   blow;    /* untere Wassermarke       */
  32.   int   bhig;    /* obere Wassermarke        */
  33. } io_rec;
  34.  
  35. typedef struct
  36.  {
  37.   boolean prsperr;  /* boolean  (ONLINE-Änderung nicht Sinnvoll)*/
  38.   boolean ergff;    /* boolean  {true=sende FF nach timeout }   */
  39.   int   my_num;   /* number   (interne Nummer des Rechners    */
  40.   int   errbell;  /* Error-Kontrolle entspricht "errcontrl:" im INF-File*/
  41.   int   time;     /* Timeout-Wert für Drucker-Kontrolle = "timeoutxx:" */
  42.   int   timeff;   /* Timeout-Wert für Drucker-Kontrolle = "timeoutFF:" */
  43.   int   mcspeed;    /* TIMER-Wert für Events = "mcspeeder:" */
  44.   int        timeout;    /* TimeOut-Wert 200 <=> 1 Sek. */
  45.   int   prspeed;  /* Paket-Grö₧e für Drucker = "priblocks:"  */
  46.   int   prconf;   /* Drucker-Suche = "setprconf:" */
  47.   long  reciev;        /* Zählvariable für empfangene Datenpakete */
  48.   long  errcnt;   /* Zählvariable für gestörte Datenpakete  */
  49.   int   TOSOFF;   /* 0=> TOS ein <>0  Keine TOS-Umlenkung */
  50.  } sys_par;
  51.  
  52. typedef sys_par *syspar;
  53.  
  54.  
  55. typedef struct   /* interne Status-Bits !! nicht Ändern !! */
  56.  {
  57.  unsigned rest:4;
  58.  unsigned stat:1;   /*bit 11: Statussendung bekommen  */
  59.  unsigned trns:1;   /*bit 10: Druck file_transfer on  */
  60.  unsigned prfree:1; /*bit 9 : 0 = Drucker frei        */
  61.  unsigned appl:1;   /*bit 8 : habe Appl.              */
  62.  unsigned prnt:1;   /*bit 7 : habe einen Drucker      */
  63.  unsigned rts:1;    /*bit 6 : ready to send           */
  64.  unsigned prf:1;    /*bit 5 : prfile in arbeit        */
  65.  unsigned wt:1;     /*bit 4 : warte auf token         */
  66.  unsigned token:1;  /*bit 3 : have token              */
  67.  unsigned rtw:3;    /* ready to work                  */
  68. } status;
  69.       /* zu Status:  bit 0 : sync erhalten          */
  70.       /*             bit 1 : test erhalten          */
  71.       /*             bit 2 : ready to work          */
  72.       /*     Bit 5 ist gesetzt, wenn kein eigener   */
  73.       /*     Drucker vorhanden ist, und der Text    */
  74.       /*     uebertragen werden muss                */
  75.  
  76. typedef union
  77.  { int wert;
  78.    status bits;
  79.  } bit_test;
  80.  
  81. /* Die Verwaltungstruktur ist in einem Array untergebracht. Ist der Ring aktiv,
  82.    so findet man hier die Informationen zum eigenen als auch zu den anderen 
  83.    Rechnern. "SYS.MY_NUM" ist dabei der Index für den Record des eigenen Rechners.
  84.    Ist der Ring nicht aktiv, so hat SYS.MY_NUM den Wert 7 */
  85.  
  86. typedef struct
  87. {
  88.   char      my_name[10];  /* Appl. Name  z.B.: bei MC-TALK*/
  89.   char      r_name[10];   /* Wert der Variablen "Vrechner1:" */
  90.   bit_test  status;   /* integer; { Status-Bits }*/
  91.   int       disk_st;  /* integer;*/
  92. } verwaltung;
  93.  
  94. #ifndef _COOKIE_H
  95. #define _COOKIE_H
  96.  
  97. union clong {
  98.     char    aschar[4];
  99.     long    aslong;
  100. };
  101.  
  102. struct cookie {
  103.     union clong tag;
  104.     long value;
  105. };
  106.  
  107. typedef struct cookie COOKIE;
  108.  
  109. #define CJAR    ((COOKIE **) 0x5a0L)
  110.  
  111. #endif /* _COOKIE_H */
  112.  
  113. typedef struct cinfo {
  114.         char    *params;
  115.         long    *kernel;
  116.         int        LW;
  117. long    (*mygemdos)(msg_typ *pars);
  118. }CINFO;
  119.  
  120. typedef verwaltung procs[8];
  121. typedef procs *all_proc;
  122.  
  123. static    CINFO    *infos=0L;
  124. static    int        MiNT=0;
  125.  
  126. /* Prototypen */
  127. long cdecl    trap111 (msg_typ *msg);
  128.  
  129. #define MC_direct_call (*infos->mygemdos)
  130.  
  131. extern    long     get_cookie(void);
  132. extern    int        get_mc_sys(syspar *sys,all_proc *allprocs);
  133. extern    long    mc_message(msg_typ *mc_msg);
  134. extern    long    write_message(int what, int an, int size,char *name,void *ptr);
  135. extern    int        anmeld_ring(char *name,int buff_size,io_rec *io_ptr);
  136. extern    io_rec    *abmeld_ring(io_rec *read_buf);
  137. extern    long    transmit(int size,int an,char *name,void *dat_adr);
  138. extern    int        lese(io_rec *read_buf,char *bufa1,int *esc,int *len);
  139. extern    void    get_Karte(void);
  140. extern    int        mc_busy(io_rec *read_buf);
  141. extern    int        mc_closed(io_rec *read_buf);
  142. extern    int        mc_neustat(io_rec *read_buf);
  143.  
  144.  
  145.  
  146.  
  147.