home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / e / e065 / 2.ddi / UIO_TRAN.H < prev    next >
Encoding:
C/C++ Source or Header  |  1991-08-28  |  23.2 KB  |  652 lines

  1. /*********************************************************************/
  2. /*                                                                   */
  3. /*    uio_tran.h - description of TRANSFER buffer and all structures */
  4. /*                 and data types unique to it.                      */
  5. /*    Author: John C. Fairman           September 4, 1990            */
  6. /*    Copyright 1990 by NeuralWare Inc.                              */
  7. /*                                                                   */
  8. /*    $Author   :  $                                                 */
  9. /*    $Date     :  $                                                 */
  10. /*    $Source   :  $                                                 */
  11. /*    $Revision :  $                                                 */
  12. /*    $Log      :  $                                                 */
  13. /*                                                                   */
  14. /*********************************************************************/
  15.  
  16. #ifndef UIO_STRC_H
  17. #include "uio_strc.h"
  18. #endif
  19.  
  20. /* Usual configuration */
  21. #define BUFFER_SHORT  short
  22. #define BUFFER_USHORT unsigned short
  23. #if 1
  24. #define BUFFER_INT    long
  25. #define BUFFER_UINT   unsigned long
  26. #else
  27. #define BUFFER_INT    int
  28. #define BUFFER_UINT   unsigned int
  29. #endif
  30. #define BUFFER_LONG   long
  31. #define BUFFER_ULONG  unsigned long
  32. #define BUFFER_REAL   float
  33. #define BUFFER_DOUBLE double
  34. #define BUFFER_CHAR   char
  35. #define BUFFER_UCHAR  unsigned char
  36. #define BUFFER_PROC   void *
  37. #define BUFFER_ADDR   void *
  38.  
  39.  
  40. #if !defined(EMULATING) && !defined(LINKING)
  41. #define TWO_DTB_MODEL              1
  42. #endif
  43.  
  44. #define HOSTPRIMS_EQ_BUFFERPRIMS   1
  45. #define SERVPRIMS_EQ_BUFFERPRIMS   1
  46.  
  47. /* Differences between model and usual configuration */
  48. #if defined(IBP) || defined (I860) || defined (IBM)
  49.       /* use interrupt vectors allocated for BASIC */
  50. #define GVEC 0x85 /* it will never be running with NW2 !! */
  51. #undef  SERVPRIMS_EQ_BUFFERPRIMS
  52. #define SERVPRIMS_EQ_BUFFERPRIMS   0
  53. #undef  HOSTPRIMS_EQ_BUFFERPRIMS
  54. #define HOSTPRIMS_EQ_BUFFERPRIMS   0
  55.  
  56. #undef  BUFFER_INT
  57. #define BUFFER_INT    long
  58. #undef  BUFFER_UINT
  59. #define BUFFER_UINT   unsigned long
  60. #if !defined (I860)
  61. #undef TWO_DTB_MODEL
  62. #define ONE_DTB_MODEL   1
  63. #endif /* ! I860 */
  64. #endif /* IBP || I860 || IBM */
  65.  
  66.  
  67. #ifdef MAC
  68. #if !defined(EMULATING) && !defined(LINKING)
  69. #undef TWO_DTB_MODEL
  70. #define ONE_DTB_MODEL
  71. #endif
  72. #undef BUFFER_DOUBLE
  73. #define BUFFER_DOUBLE long double
  74. #if !defined(MPW3) && !defined(AUX)
  75. #undef SERVPRIMS_EQ_BUFFERPRIMS
  76. #define SERVPRIMS_EQ_BUFFERPRIMS   0
  77. #undef BUFFER_INT
  78. #define BUFFER_INT    long    /* Must be 32 bit */
  79. #undef BUFFER_UINT
  80. #define BUFFER_UINT   unsigned long /* Must be 32 bit */
  81. #endif /* !MPW && !AUX */
  82. #endif /* MAC */
  83.  
  84.  
  85. /* */
  86. /*******************************************************************/
  87. /*                                                                 */
  88. /*  Graphic Interface Data-structures & Defines                    */
  89. /*                                                                 */
  90. /*******************************************************************/
  91.  
  92. typedef BUFFER_REAL       DATA_T;
  93. typedef BUFFER_ULONG      OFFSET;
  94. #define DATA_TYPE         REAL_32_TYPE
  95. #define HOST_PROCESS_ID   0x0
  96. #define MAX_UIO_STRING    256
  97. #define MAX_BLIT_BYTES    8192
  98. #define MAX_FORMAT_CHARS  256
  99.  
  100. #if (HOSTPRIMS_EQ_BUFFERPRIMS) && (SERVPRIMS_EQ_BUFFERPRIMS)
  101. #define MAX_FORMAT_ARGS   20
  102. #define FMT_ARGS_TYPE     BUFFER_ULONG
  103. #else
  104. #define MAX_FORMAT_ARGS   1024
  105. #define FMT_ARGS_TYPE     BUFFER_CHAR
  106. #endif
  107.  
  108. typedef struct {
  109.   BUFFER_UINT  ag_msgl;               /* message length */
  110.   BUFFER_UINT  ag_msgdir;             /* 0=read; 1=write */
  111.   BUFFER_CHAR  ag_msg[MAX_UIO_STRING];/* message */
  112. } ARGMSG;
  113.  
  114. typedef struct {
  115.   BUFFER_UINT  ag_mode;               /* save mode */
  116.   BUFFER_INT   unused;
  117.   BUFFER_CHAR  ag_NetN[MAX_UIO_STRING];/* network name */
  118. } ARGN;
  119.  
  120. typedef struct {                        /* window */
  121.   BUFFER_UINT  ag_winn;               /* window number */
  122.   BUFFER_UINT  ag_color;              /* window color */
  123.   BUFFER_UINT  ag_x0, ag_y0;          /* origin */
  124.   BUFFER_UINT  ag_x1, ag_y1;          /* top right */
  125. } ARG1;
  126.  
  127. typedef struct {                        /* line, point, box */
  128.   BUFFER_UINT  ag_winn;               /* window number */
  129.   BUFFER_UINT  ag_color;              /* color */
  130.   BUFFER_UINT  ag_mode;               /* mode 0=set, 1=xor */
  131.   BUFFER_UINT  ag_x0, ag_y0;          /* origin */
  132.   BUFFER_UINT  ag_x1, ag_y1;          /* end-point */
  133.   BUFFER_UINT  ag_style;              /* line style */
  134. } ARG2;
  135.  
  136. typedef struct {                        /* put string */
  137.   BUFFER_UINT  ag_winn;               /* window number */
  138.   BUFFER_UINT  ag_color;              /* color */
  139.   BUFFER_UINT  ag_mode;               /* mode */
  140.   BUFFER_UINT  ag_x0, ag_y0;          /* origin */
  141.   BUFFER_UINT  ag_rot;                /* rotation */
  142.   BUFFER_CHAR  ag_sp[MAX_UIO_STRING]; /* string itself */
  143. } ARGS;
  144.  
  145. /* */
  146. typedef struct {
  147.   BUFFER_UINT  ag_winn;               /* window number */
  148.   BUFFER_UINT  ag_x0, ag_y0;          /* point to read */
  149.   BUFFER_UINT  unused;
  150. } ARG3;
  151.  
  152. typedef struct {
  153.   BUFFER_UINT    pr_mode;             /* prune mode */
  154.   BUFFER_UINT    unused;
  155.   BUFFER_DOUBLE  pr_thresh;           /* prune threshold */
  156.   BUFFER_DOUBLE  pr_prob;             /* prune probability */
  157.   BUFFER_DOUBLE  pr_wtmax;            /* maximum weight */
  158. } ARGPRUNE;
  159.  
  160. typedef struct {
  161.   BUFFER_UINT  ag_winn;               /* window number */
  162.   BUFFER_UINT  ag_mode;               /* mode 0=set, 1=xor */
  163.   BUFFER_UINT  ag_x0, ag_y0;          /* origin */
  164.   BUFFER_UINT  ag_x_exp, ag_y_exp;    /* expansion factors */
  165.   BUFFER_UINT  ag_x_size, ag_y_size;  /* size of data      */
  166.   BUFFER_CHAR  ag_blit_bytes[MAX_BLIT_BYTES]; /* offset to blit data */
  167. } ARGBLIT;
  168.  
  169. typedef struct {
  170.   BUFFER_UINT  ag_winn;               /* window number */
  171.   BUFFER_UINT  ag_color;              /* color of blit area */
  172.   BUFFER_UINT  ag_mode;               /* mode 0=set, 1=xor */
  173.   BUFFER_UINT  ag_x0, ag_y0;          /* origin */
  174.   BUFFER_UINT  ag_x_size, ag_y_size;  /* size of data      */
  175.   BUFFER_UINT  ag_rot;                /* rotation */
  176.   BUFFER_CHAR  ag_blit_bytes[MAX_BLIT_BYTES]; /* offset to blit data */
  177. } ARGPBLIT;
  178.  
  179. typedef struct {
  180.   BUFFER_REAL  ape_I;                 /* sum */
  181.   BUFFER_REAL  ape_Tran;              /* tran */
  182.   BUFFER_REAL  ape_Output;            /* output */
  183.   BUFFER_REAL  ape_Err;               /* error */
  184.   BUFFER_REAL  ape_CumErr;            /* cumulative error */
  185.   BUFFER_UINT  ape_Flags;             /* flags */
  186.   BUFFER_UINT  unused;
  187. } APE_BUF;
  188.  
  189. typedef struct {
  190.   BUFFER_LONG  asc_recall;            /* recall counter */
  191.   BUFFER_REAL  asc_rcl[5];            /* recall data */
  192.   BUFFER_LONG  asc_learn;             /* learn counter */
  193.   BUFFER_REAL  asc_lrn[4];            /* learn data */
  194. } ASCOL_BUF;
  195.  
  196. typedef struct {
  197.   BUFFER_CHAR  asc_nam[16];           /* schedule name */
  198.   ASCOL_BUF    asc_col[5];            /* data columns */
  199. } ASCHED_BUF;
  200.  
  201. typedef struct {
  202.   BUFFER_UINT  start_in;
  203.   BUFFER_UINT  start_out;
  204.   BUFFER_REAL  min_in;
  205.   BUFFER_REAL  max_in;
  206.   BUFFER_REAL  min_out;
  207.   BUFFER_REAL  max_out;
  208. } IOPARMS_BUF;
  209.  
  210. /* */
  211. typedef struct {
  212.   BUFFER_UINT  ag_rwf;                /* read=0; write=1 */
  213.   BUFFER_UINT  ag_layern;             /* layer number */
  214.   BUFFER_UINT  ag_pen;                /* PE within layer */
  215.   BUFFER_UINT  unused;
  216.   union {                             /* data itself */
  217.     APE_BUF      ag_pe;
  218.     ASCHED_BUF   ag_sched;
  219.     IOPARMS_BUF  ioparms_buf;
  220.     BUFFER_LONG  ag_ctr[8];
  221.   } ag_rdata;
  222. } ARGPSCIO;
  223.  
  224. typedef struct {
  225.   BUFFER_LONG  ag_count;              /* learn / recall count */
  226. } ARGLR;
  227.  
  228. typedef struct {
  229.   BUFFER_UINT  xsize;
  230.   BUFFER_UINT  ysize;
  231.   BUFFER_UINT  ncolor;
  232.   BUFFER_UINT  chrx;
  233.   BUFFER_UINT  chry;
  234.   BUFFER_UINT  unused;
  235. } AGPARMS;
  236.  
  237. typedef struct {
  238.   BUFFER_UINT  key;
  239.   BUFFER_UINT  xloc;
  240.   BUFFER_UINT  yloc;
  241.   BUFFER_UINT  buttonstates;
  242. } AMOUSE;
  243.  
  244. typedef struct {
  245.   BUFFER_UINT  nlay;
  246.   BUFFER_UINT  nin;
  247.   BUFFER_UINT  nout;
  248.   BUFFER_UINT  ltype;
  249.   BUFFER_CHAR  cs[FNALC];
  250. /* FIX_LATER */
  251.   BUFFER_CHAR  netn[FNALC];
  252. } ARDNETINF;
  253.  
  254. typedef struct {
  255.   BUFFER_UINT  process_id;
  256.   BUFFER_UINT  unused;
  257.   BUFFER_CHAR  filename[FNALC];
  258. } INITCMD;
  259.  
  260. #ifdef MAC
  261. typedef struct {
  262.   BUFFER_UINT  szof_uio_dbl;
  263.   BUFFER_PROC  Receive_request;
  264.   BUFFER_PROC  stdio_funcs[MIO_MAX];
  265. } CREATECMD;
  266. #endif
  267.  
  268.  
  269. typedef struct {
  270.   BUFFER_UINT  layn;
  271.   BUFFER_UINT  npes;
  272. } DATACMD;
  273.  
  274. typedef struct {
  275.   BUFFER_UINT  instrument_id;
  276.   BUFFER_UINT  ndataelems;
  277. } INSTRUMENTCMD;
  278.  
  279. typedef struct {
  280.   BUFFER_UINT  ndataelems;
  281. } WRITEVECTORCMD;
  282.  
  283. /* */
  284. typedef struct {
  285.   FMT_ARGS_TYPE format_args[MAX_FORMAT_ARGS];
  286.   BUFFER_CHAR   format[MAX_FORMAT_CHARS];
  287. } ARGFMT;
  288.  
  289. /* CCK: use longs (here & PRSTATS to make it universal across
  290.   all platforms. */
  291. typedef struct {
  292.   BUFFER_LONG  PRNwts;
  293.   BUFFER_REAL  PRMin;
  294.   BUFFER_REAL  PRMax;
  295.   BUFFER_REAL  PRSum;
  296.   BUFFER_REAL  PRAverage;
  297.   BUFFER_REAL  PRMedian;
  298.   BUFFER_LONG  PRHist[NPHIST];
  299.   BUFFER_REAL  PRMinA;
  300.   BUFFER_REAL  PRMaxA;
  301.   BUFFER_REAL  PRSumA;
  302.   BUFFER_REAL  PRAverageA;
  303.   BUFFER_REAL  PRMedianA;
  304.   BUFFER_LONG  PRHistA[NPHIST];
  305. } PRSTATS_BUF;
  306.  
  307. typedef struct {
  308.   BUFFER_UINT   nlay;
  309.   BUFFER_UINT   nPE;
  310.   BUFFER_UINT   var_idx;
  311.   BUFFER_UINT   rwf;
  312.   BUFFER_DOUBLE fweight;
  313. } ARGCNIO;
  314.  
  315. typedef struct _data_desc_t {
  316.   BUFFER_INT   num_elements;          /* 1 if scalar */
  317.   BUFFER_INT   data_type;
  318. /********************************* READ THIS *********************************/
  319.   BUFFER_INT   unused;                /* This is here to coincide
  320.       with I860 alignment of doubles on 8 byte boundaries.  If this
  321.     were not here, the RPC_area field which occurs after the
  322.     data_descriptor field in the DATA_TRANSFER_AREA structure
  323.       would align on an eight byte boundary due to the inclusion
  324.     of a double within the union in the RPC_area. */
  325. /*****************************************************************************/
  326. #define NO_DATA_TYPE  0x0010
  327. #define INT_8_TYPE    0x0010            /* Legal data types          */
  328. #define UINT_8_TYPE   0x0110            /* The derivation from the   */
  329. #define INT_16_TYPE   0x0020            /* bit assignments are as    */
  330. #define UINT_16_TYPE  0x0120            /* follows                   */
  331. #define INT_32_TYPE   0x0040            /*     bit 0-3 -> # of bits  */
  332. #define UINT_32_TYPE  0x0140            /*     bit 4-7 -> # of bytes */
  333. #define REAL_32_TYPE  0x0440            /*     bit 8 -> unsigned     */
  334. #define REAL_64_TYPE  0x0480            /*     bit 9 -> char         */
  335. #define CHAR_8_TYPE   0x0210            /*     bit 10 -> float       */
  336. #define UCHAR_8_TYPE  0x0310            /*     bit 11-15 -> unused   */
  337. #define TEXT_TYPE     0x0210
  338. } DATA_DESC_T;
  339.  
  340. /* */
  341. typedef union {
  342.   ARGMSG          argmsg;
  343.   ARGN            argn;
  344.   APE             ape;
  345.   ASCOL           ascol;
  346.   ASCHED          asched;
  347.   ARG1            arg1;
  348.   ARG2            arg2;
  349.   ARG3            arg3;
  350.   ARGS            args;
  351.   ARGBLIT         argblit;
  352.   ARGLR           arglr;
  353.   ARGPBLIT        argpblit;
  354.   ARGPRUNE        argprune;
  355.   ARGPSCIO        argpscio;
  356.   AGPARMS         agparms;
  357.   AMOUSE          amouse;
  358.   ARDNETINF       ardnetinf;
  359.   DATACMD         datacmd;
  360.   INSTRUMENTCMD   instrumentcmd;
  361.   WRITEVECTORCMD  writevectorcmd;
  362.   INITCMD         initcmd;
  363. #ifdef MAC
  364.   CREATECMD       createcmd;
  365. #endif
  366.   ARGFMT          argfmt;
  367.   PRSTATS_BUF     prstats_buf;
  368.   ARGCNIO         argcnio;
  369. } ALL_ARG_LISTS_T;
  370.  
  371. typedef struct {
  372.   BUFFER_INT   process_from_id;
  373.   BUFFER_INT   process_to_id;
  374.   BUFFER_INT   unused;         /* For future expans. and alignment */
  375. #define REQ_STATUS_NONE       0x00
  376. #define REQ_STATUS_STARTED    0x01
  377. #define REQ_STATUS_COMPLETE   0x02
  378.   BUFFER_INT   request;
  379. #define CMD_CREATE            0xff      /* Never use this in DTB */
  380. #define CMD_NONE              0x00      /* This command cannot be sent */
  381. #define CMD_WAIT              0x01      /* The commands which can be sent */
  382. #define CMD_ACKNOWLEDGE       0x02
  383. #define CMD_INIT              0x03
  384. #define CMD_TERM              0x04
  385. #define CMD_ATTENTION         0x05
  386. #define CMD_LEARN_START       0x06
  387. #define CMD_LEARN_INPUT       0x07
  388. #define CMD_LEARN_OUTPUT      0x08
  389. #define CMD_LEARN_RESULT      0x09
  390. #define CMD_LEARN_END         0x0A
  391. #define CMD_RECALL_START      0x0B
  392. #define CMD_READ              0x0C
  393. #define CMD_WRITE             0x0D
  394. #define CMD_WRITE_STEP        0x0E
  395. #define CMD_RECALL_TEST       0x0F
  396. #define CMD_RECALL_END        0x10
  397. #define CMD_INSTRUMENT        0x11
  398. #define CMD_WRITE_VECTOR      0x12
  399. #define CMD_UNINSTALL         0x13       /* Uninstall never use this in DTB */
  400. #define CMD_REWIND            0x14
  401. #define CMD_EXPLAIN           0x15
  402.  
  403. /* */
  404. #define REQ_NONE              0x20       /* This request cannot be received */
  405. #define REQ_WAIT              0x21      /* The requests which can be handled */
  406. #define REQ_ACKNOWLEDGE       0x22
  407. #define REQ_GETSTR            0x23
  408. #define REQ_PUTSTR            0x24
  409. #define REQ_PUTFMT            0x25
  410. #define REQ_SAVENET           0x26
  411. #define REQ_UG_WINDOW         0x27
  412. #define REQ_UG_LINE           0x28
  413. #define REQ_UG_POINT          0x29
  414. #define REQ_UG_BOX            0x2A
  415. #define REQ_UG_BOXF           0x2B
  416. #define REQ_UG_PUTS           0x2C
  417. #define REQ_UG_WINDEL         0x2D
  418. #define REQ_UG_WINCLR         0x2E
  419. #define REQ_UG_GPARMS         0x2F
  420. #define REQ_UG_MOUSE          0x30
  421. #define REQ_UG_RDPOINT        0x31
  422. #define REQ_UG_RDNETINF       0x32
  423. #define REQ_UG_GETINSTRT      0x33
  424. #define REQ_UG_LOADNET        0x34
  425. #define REQ_UG_LEARN          0x35
  426. #define REQ_UG_RECALL         0x36
  427. #define REQ_UG_MSGIO          0x37
  428. #define REQ_UG_WTSTATS        0x38
  429. #define REQ_UG_PRUNE          0x39
  430. #define REQ_UG_BLIT           0x3A
  431. #define REQ_UG_PBLIT          0x3B
  432. #define REQ_UG_PEIO           0x3C
  433. #define REQ_UG_SCHDIO         0x3D
  434. #define REQ_UG_CTRIO          0x3E
  435. #define REQ_UG_IOPARMS        0x3F
  436. #define REQ_UG_CNIO           0x40
  437. #define REQ_UG_TEST           0x41
  438.  
  439. /* The UIO_errors go here  0x80 -> 0xBF */
  440.  
  441.   union {
  442.     BUFFER_SHORT    buffer_short;
  443.     BUFFER_USHORT   buffer_ushort;
  444.     BUFFER_INT      buffer_int;
  445.     BUFFER_UINT     buffer_uint;
  446.     BUFFER_LONG     buffer_long;
  447.     BUFFER_ULONG    buffer_ulong;
  448.     BUFFER_REAL     buffer_real;
  449.     BUFFER_DOUBLE   buffer_double;
  450.     BUFFER_CHAR     buffer_char;
  451.     BUFFER_UCHAR    buffer_uchar;
  452.   } return_value;
  453.   BUFFER_INT      unused2[2];         /* For future expans. and alignment */
  454.   ALL_ARG_LISTS_T all_arg_lists;
  455. } RPC_AREA_T;
  456.  
  457. #ifdef UNIX
  458. #define MAX_TRANSFER_UNITS 20000
  459. #else
  460. #define MAX_TRANSFER_UNITS 5000
  461. #endif
  462.  
  463. #define SIZE_OF_UIO_BUFFER      (sizeof(DATA_T) * MAX_TRANSFER_UNITS)
  464.  
  465. typedef struct _data_area_t {
  466.   BUFFER_INT   unused[4];
  467.   DATA_T       data[MAX_TRANSFER_UNITS];
  468. } DATA_AREA_T;
  469.  
  470. /* */
  471.  
  472. typedef struct _data_transfer_area_t {
  473.   OFFSET       data_offset;  /* # of bytes from buffer beginning */
  474.   BUFFER_INT   unused[4];
  475.   DATA_DESC_T  data_descriptor; /* type of data */
  476.                                    /* The data descriptor is here to   */
  477.                                    /* ensure host/server compatibility */
  478.                                    /* and allow for future portability */
  479.                                    /* and userio across dispergent     */
  480.                                    /* architectures. */
  481.   RPC_AREA_T   RPC_area;     /* area used to pass arguments */
  482.   DATA_AREA_T  data_area;    /* area used to transfer data */
  483. } DATA_TRANSFER_AREA_T;
  484.  
  485. #define STANDARD_SIZE (sizeof(DATA_TRANSFER_AREA_T) - sizeof(DATA_AREA_T) - sizeof(ALL_ARG_LISTS_T))
  486.  
  487. typedef struct _request_data_t {
  488.   BUFFER_INT   response;
  489.   BUFFER_INT   i_or_o;
  490.   BUFFER_INT   num_bytes_out;
  491.   BUFFER_INT   num_bytes_back;
  492. #define NON_IO_REQ   0x0
  493. #define INPUT_REQ    0x1
  494. #define OUTPUT_REQ   0x2
  495. } REQUEST_DATA_T;
  496.  
  497. /* */
  498. #ifdef HOME_FOR_TRANSFER_DATA
  499.                   /* NOTE: these global variables are */
  500.                   /* initialized here to force them into */
  501.                   /* the default data segment (Microsoft) */
  502.                   /* their values can then be verified */
  503.                   /* through a window mapped onto the */
  504.                   /* user I/O data segment from inside */
  505.                   /* NWORKS (OSx86 versions) */
  506. DATA_TRANSFER_AREA_T *Data_transfer_ptr = {NULL};
  507.  
  508. NINT Process_id = {-1};
  509.  
  510. #if !defined(UIO_SERVER) || !defined(EMULATING)
  511.  
  512. REQUEST_DATA_T command_data_table[] = {
  513.   { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* CMD_NONE  0x00 */
  514. /* The commands which can be sent */
  515.   { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* CMD_WAIT */
  516.   { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* CMD_ACKNOWLEDGE */
  517.   { REQ_ACKNOWLEDGE, NON_IO_REQ,
  518.           sizeof(INITCMD), 0},                     /* CMD_INIT */
  519.   { REQ_ACKNOWLEDGE, NON_IO_REQ,
  520.           sizeof(INITCMD), 0},                     /* CMD_TERM */
  521.   { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* CMD_ATTENTION */
  522.  
  523.   { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* CMD_LEARN_START */
  524.   { REQ_ACKNOWLEDGE, INPUT_REQ,
  525.           sizeof(DATACMD), sizeof(DATACMD)},       /* CMD_LEARN_INPUT */
  526.   { REQ_ACKNOWLEDGE, INPUT_REQ,
  527.           sizeof(DATACMD), sizeof(DATACMD)},       /* CMD_LEARN_OUTPUT */
  528.   { REQ_ACKNOWLEDGE, OUTPUT_REQ,
  529.           sizeof(DATACMD), 0},                     /* CMD_LEARN_RESULT */
  530.   { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* CMD_LEARN_END  */
  531.   { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* CMD_RECALL_START */
  532.   { REQ_ACKNOWLEDGE, INPUT_REQ,
  533.           sizeof(DATACMD), sizeof(DATACMD)},       /* CMD_READ */
  534.   { REQ_ACKNOWLEDGE, OUTPUT_REQ,
  535.           sizeof(DATACMD), 0},                     /* CMD_WRITE */
  536.   { REQ_ACKNOWLEDGE, OUTPUT_REQ,
  537.           sizeof(DATACMD), 0},                     /* CMD_WRITE_STEP */
  538.   { REQ_ACKNOWLEDGE, OUTPUT_REQ,
  539.           sizeof(DATACMD), 0},                     /* CMD_RECALL_TEST */
  540.   { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* CMD_RECALL_END 0x10 */
  541.   { REQ_ACKNOWLEDGE, OUTPUT_REQ,
  542.           sizeof(INSTRUMENTCMD), 0},               /* CMD_INSTRUMENT */
  543.   { REQ_ACKNOWLEDGE, OUTPUT_REQ,
  544.           sizeof(WRITEVECTORCMD), 0},              /* CMD_WRITE_VECTOR */
  545.   { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* CMD_UNINSTALL */
  546.   { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* CMD_RECALL */
  547.   { REQ_ACKNOWLEDGE, OUTPUT_REQ,
  548.           sizeof(DATACMD), 0},                     /* CMD_EXPLAIN */
  549.   { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* RESERVED */
  550.   { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* RESERVED */
  551.   { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* RESERVED */
  552.   { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* RESERVED */
  553.   { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* RESERVED */
  554.   { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* RESERVED */
  555.   { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* RESERVED */
  556.   { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* RESERVED */
  557.   { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* RESERVED */
  558.   { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* RESERVED */
  559. /* */
  560.   { CMD_NONE,        NON_IO_REQ, 0, 0},      /* REQ_NONE 0x20 */
  561. /* The requests which can be received */
  562.   { CMD_NONE,        NON_IO_REQ, 0, 0},      /* REQ_WAIT */
  563.   { CMD_NONE,        NON_IO_REQ, 0, 0},      /* REQ_ACKNOWLEDGE */
  564.   { CMD_NONE,        NON_IO_REQ,
  565.           0, sizeof(ARGMSG)},                      /* REQ_GETSTR */
  566.   { CMD_NONE,        NON_IO_REQ,
  567.           sizeof(ARGMSG), 0},                      /* REQ_PUTSTR */
  568.   { CMD_NONE,        NON_IO_REQ,
  569.           sizeof(ARGFMT), 0},                      /* REQ_PUTFMT */
  570.   { CMD_NONE,        NON_IO_REQ,
  571.           sizeof(ARGN), 0},                        /* REQ_SAVENET */
  572.   { CMD_NONE,        NON_IO_REQ,
  573.           sizeof(ARG1), 0},                        /* REQ_UG_WINDOW */
  574.   { CMD_NONE,        NON_IO_REQ,
  575.           sizeof(ARG2), 0},                        /* REQ_UG_LINE */
  576.   { CMD_NONE,        NON_IO_REQ,
  577.           sizeof(ARG2), 0},                        /* REQ_UG_POINT */
  578.   { CMD_NONE,        NON_IO_REQ,
  579.           sizeof(ARG2), 0},                        /* REQ_UG_BOX */
  580.   { CMD_NONE,        NON_IO_REQ,
  581.           sizeof(ARG2), 0},                        /* REQ_UG_BOXF */
  582.   { CMD_NONE,        NON_IO_REQ,
  583.           sizeof(ARGS), 0},                        /* REQ_UG_PUTS */
  584.   { CMD_NONE,        NON_IO_REQ,
  585.           sizeof(ARG3), 0},                        /* REQ_UG_WINDEL */
  586.   { CMD_NONE,        NON_IO_REQ,
  587.           sizeof(ARG3), 0},                        /* REQ_UG_WINCLR */
  588.   { CMD_NONE,        NON_IO_REQ,
  589.           0, sizeof(AGPARMS)},                     /* REQ_UG_GPARMS */
  590.   { CMD_NONE,        NON_IO_REQ,
  591.           0, sizeof(AMOUSE)},                      /* REQ_UG_MOUSE 0x30 */
  592.   { CMD_NONE,        NON_IO_REQ,
  593.           sizeof(ARG3), 0},                        /* REQ_UG_RDPOINT */
  594.   { CMD_NONE,        NON_IO_REQ,
  595.            0, sizeof(ARDNETINF)},                  /* REQ_UG_RDNETINF */
  596.   { CMD_NONE,        NON_IO_REQ,
  597.            0, sizeof(ARGMSG)},                     /* REQ_UG_GETINSTRT */
  598.   { CMD_NONE,        NON_IO_REQ,
  599.            sizeof(ARGN), 0},                       /* REQ_UG_LOADNET */
  600.   { CMD_NONE,        NON_IO_REQ,
  601.            sizeof(ARGLR), 0},                      /* REQ_UG_LEARN */
  602.   { CMD_NONE,        NON_IO_REQ,
  603.            sizeof(ARGLR), 0},                      /* REQ_UG_RECALL */
  604.   { CMD_NONE,        NON_IO_REQ,
  605.            sizeof(ARGMSG), sizeof(ARGMSG)},        /* REQ_UG_MSGIO */
  606.   { CMD_NONE,        NON_IO_REQ,
  607.            sizeof(PRSTATS_BUF), 0},                /* REQ_UG_WTSTATS */
  608.   { CMD_NONE,        NON_IO_REQ,
  609.            sizeof(ARGPRUNE),  0},                  /* REQ_UG_PRUNE */
  610.   { CMD_NONE,        NON_IO_REQ,
  611.            sizeof(ARGBLIT), 0},                    /* REQ_UG_BLIT */
  612.   { CMD_NONE,        NON_IO_REQ,
  613.            sizeof(ARGPBLIT), 0},                   /* REQ_UG_PBLIT */
  614.   { CMD_NONE,        NON_IO_REQ,
  615.            sizeof(ARGPSCIO), sizeof(ARGPSCIO)},    /* REQ_UG_PEIO */
  616.   { CMD_NONE,        NON_IO_REQ,
  617.            sizeof(ARGPSCIO), sizeof(ARGPSCIO)},    /* REQ_UG_SCHDIO */
  618.   { CMD_NONE,        NON_IO_REQ,
  619.            sizeof(ARGPSCIO), sizeof(ARGPSCIO)},    /* REQ_UG_CTRIO 0x3D */
  620.   { CMD_NONE,        NON_IO_REQ,
  621.            sizeof(ARGPSCIO), sizeof(ARGPSCIO)},    /* REQ_UG_IOPARMS */
  622.   { CMD_NONE,        NON_IO_REQ,
  623.            sizeof(ARGCNIO), 0},                    /* REQ_UG_CNIO */
  624.   { CMD_NONE,        NON_IO_REQ,
  625.            sizeof(ARGLR), 0}                       /* REQ_UG_TEST */
  626. };
  627.  
  628. #endif /* else of !defined(UIO_SERVER) || !defined(EMULATING) */
  629.  
  630. #else /* HOME_FOR_TRANSFER_DATA */
  631.  
  632. IMPORT DATA_TRANSFER_AREA_T *Data_transfer_ptr;
  633. IMPORT REQUEST_DATA_T       command_data_table[];
  634.  
  635. IMPORT NINT                 Process_id;
  636.  
  637.  
  638. #endif /* HOME_FOR_TRANSFER_DATA */
  639.  
  640. /* */
  641. /* Host UIO errors */
  642. #define OUTPUT_OVERFLOW             0x81
  643. #define INPUT_OVERFLOW              0x82
  644. #define EXPECTED_INPUT_OVERFLOW     0x83
  645. #define INPUT_CORRUPTION            0x84
  646. #define UNKNOWN_REQUEST             0x85
  647. #define PROCESS_CREATION_FAILED     0x86
  648.  
  649. /* Server UIO errors */
  650. #define UNKNOWN_COMMAND             0x91
  651.  
  652.