home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 15 / 15.iso / s / s038 / 10.ddi / 017.LIF / DOSRMX.H < prev    next >
Encoding:
C/C++ Source or Header  |  1992-07-02  |  4.7 KB  |  133 lines

  1. /*
  2.  * dosrmx.h
  3.  */
  4.  
  5. #ifndef _dosrmxh
  6. #define _dosrmxh
  7.  
  8. #include <i86.h>
  9.  
  10. /* ------------------------------------------------------ */
  11. /*  iRMX structure declarations   */
  12. #pragma noalign (dosstatestruct)
  13. typedef struct dosstatestruct {
  14.           unsigned long     edi;
  15.           unsigned long     esi;
  16.           unsigned long     ebp;
  17.           unsigned long     res1;
  18.           unsigned long     ebx;
  19.           unsigned long     edx;
  20.           unsigned long     ecx;
  21.           unsigned long     eax;
  22.           unsigned long     res2;
  23.           unsigned long     eip;
  24.           unsigned long     cs;
  25.           unsigned long     eflags;
  26.           unsigned long     esp;
  27.           unsigned long     ss;
  28.           unsigned long     es;
  29.           unsigned long     ds;
  30.           unsigned long     fs;
  31.           unsigned long     gs;
  32. } DOSSTATESTRUC;
  33.  
  34. typedef struct flagsstruc {    unsigned cf:  1;
  35.                     unsigned res1: 1;
  36.                     unsigned pf:   1;
  37.                     unsigned res2: 1;
  38.                     unsigned af:   1;
  39.                     unsigned res3: 1;
  40.                     unsigned zf:   1;
  41.                     unsigned sf:   1;
  42.                     unsigned tf:   1;
  43.                     unsigned ief:  1;
  44.                     unsigned df:   1;
  45.                     unsigned of:   1;
  46.                     unsigned ioplf:     2;
  47.                     unsigned ntf:  1;
  48.                     unsigned res4: 1;
  49. } FLAGSTRUCT;
  50.  
  51. #pragma noalign (WORDREGS)
  52. struct WORDREGS{
  53.                     unsigned short status;
  54.                     unsigned short flags;
  55.                     unsigned char int_num;
  56.                     unsigned char tsr_flags;
  57.                     unsigned short reg_ax;
  58.                     unsigned short reg_bx;
  59.                     unsigned short reg_cx;
  60.                     unsigned short reg_dx;
  61.                     unsigned short reg_di;
  62.                     unsigned short reg_si;
  63.                     unsigned short reg_ds;
  64.                     unsigned short reg_es;
  65.                     unsigned short reg_bp;
  66.                     unsigned char xfer_data;
  67.                     unsigned char src1_xfer_pair;
  68.                     unsigned char src2_xfer_pair;
  69.                     unsigned char dest1_xfer_pair;
  70.                     unsigned char dest2_xfer_pair;
  71.                     unsigned char far *src_p_1;
  72.                     unsigned short src_count_1;
  73.                     unsigned char far *src_p_2;
  74.                     unsigned short src_count_2;
  75.                     unsigned char far *dest_p_1;
  76.                     unsigned short dest_count_1;
  77.                     unsigned char far *dest_p_2;
  78.                     unsigned short dest_count_2;
  79.      };
  80. #pragma noalign (BYTEREGS)
  81. struct BYTEREGS {
  82.                     unsigned short status;
  83.                     unsigned short flags;
  84.                     unsigned char int_num;
  85.                     unsigned char tsr_flags;
  86.                     unsigned char reg_al;
  87.                     unsigned char reg_ah;
  88.                     unsigned char reg_bl;
  89.                     unsigned char reg_bh;
  90.                     unsigned char reg_cl;
  91.                     unsigned char reg_ch;
  92.                     unsigned char reg_dl;
  93.                     unsigned char reg_dh;
  94.                     unsigned short reg_di;
  95.                     unsigned short reg_si;
  96.                     unsigned short reg_ds;
  97.                     unsigned short reg_es;
  98.                     unsigned short reg_bp;
  99.                     unsigned char xfer_data;
  100.                     unsigned char src1_xfer_pair;
  101.                     unsigned char src2_xfer_pair;
  102.                     unsigned char dest1_xfer_pair;
  103.                     unsigned char dest2_xfer_pair;
  104.                     unsigned char far *src_p_1;
  105.                     unsigned short src_count_1;
  106.                     unsigned char far *src_p_2;
  107.                     unsigned short src_count_2;
  108.                     unsigned char far *dest_p_1;
  109.                     unsigned short dest_count_1;
  110.                     unsigned char far *dest_p_2;
  111.                     unsigned short dest_count_2;
  112.                };
  113. typedef union dosdatastruct   {
  114.                struct WORDREGS x;
  115.                struct BYTEREGS h;
  116.                } DOSDATASTRUC;
  117.  
  118. /* ------------------------------------------------------ */
  119. /* iRMX Nucleus interface functions */
  120. #pragma fixedparams("rqesetvm86extension")
  121. #pragma fixedparams("rqedosrequest")
  122.  
  123. extern void rqesetvm86extension(unsigned char,
  124.      void (far *)(void),
  125.      void (far *)(void),
  126.      unsigned short far *);
  127.  
  128. extern void rqedosrequest(DOSDATASTRUC far *,
  129.      unsigned short,
  130.      unsigned short far *);
  131.  
  132. #endif
  133.