home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 4 Drivers / 04-Drivers.zip / MIDI.ZIP / MIDIC.H < prev    next >
C/C++ Source or Header  |  1991-11-26  |  5KB  |  137 lines

  1. /************************************/
  2. /*                                  */
  3. /*  MIDIC - OS/2 device driver      */
  4. /*          Header File copyright   */
  5. /*          IBM 1991                */
  6. /*                                  */
  7. /*                                  */
  8. /*                                  */
  9. /* This header file contains the    */
  10. /* required OS/2 device driver      */
  11. /* structures for the Drive header  */
  12. /* the Request Header, the INIT_IN  */
  13. /* packet, the INIT_OUT packet, and */
  14. /* for this particular device       */
  15. /* driver, also the ReadWrite pack- */
  16. /* et.                              */
  17. /*                                  */
  18. /************************************/
  19.  
  20. void   near last_code();
  21.  
  22.  
  23. extern void near STRAT();
  24. extern void near ReadBytes(unsigned long,
  25.                            unsigned long,
  26.                            unsigned short);
  27. extern void near WriteBytes(unsigned long,
  28.                             unsigned long,
  29.                             unsigned short);
  30. extern void near int3();
  31. extern void near SetIRQ(unsigned short,
  32.                         void near *,
  33.                         unsigned short);
  34. extern void near INT_HNDLR();
  35. extern int  pascal far DOSPUTMESSAGE(unsigned int,
  36.                                      unsigned int,
  37.                              unsigned char far *);
  38.  
  39. #define MIDI_DATA 0x0330
  40. #define MIDI_CMD  0x0331
  41. #define DUMB_MODE 0x003f
  42. #define MPU_RESET 0x00ff
  43.  
  44. #define DAW_CHR   0x8000
  45. #define DAW_IDC   0x4000
  46. #define DAW_IBM   0x2000
  47. #define DAW_SHR   0x1000
  48. #define DAW_OPN   0x0800
  49. #define DAW_LEVEL 0x0080
  50. #define DAW_GIO   0x0040
  51. #define DAW_CLK   0x0008
  52. #define DAW_NUL   0x0004
  53. #define DAW_SCR   0x0002
  54. #define DAW_KBD   0x0001
  55.  
  56. #define ERR     0x8000
  57. #define DEV     0x4000
  58. #define BUSY    0x0200
  59. #define DONE    0x0100
  60.  
  61. #define INIT          0x00
  62. #define MEDIA_CHECK   0x01
  63. #define BUILD_BPB     0x02
  64. #define READ          0x04
  65. #define READ_NO_WAIT  0x05
  66. #define INPUT_STATUS  0x06
  67. #define INPUT_FLUSH   0x07
  68. #define WRITE         0x08
  69. #define WRITE_VERIFY  0x09
  70. #define OUTPUT_STATUS 0x0a
  71. #define OUTPUT_FLUSH  0x0b
  72. #define OPEN          0x0d
  73. #define CLOSE         0x0e
  74. #define REMOVABLE     0x0f
  75. #define IOCTL         0x10
  76. #define RESET         0x11
  77. #define GET_DRIVE_MAP 0x12
  78. #define SET_DRIVE_MAP 0x13
  79. #define DEINSTALL     0x14
  80. #define PARTITIONABLE 0x16
  81. #define GET_FIXED_MAP 0x17
  82.  
  83.  
  84. typedef struct DeviceHdr {
  85.    struct DeviceHdr far *PtrNextHdr; /* -1, no more */
  86.    unsigned short  HdrAttr;     /* hdr attribute    */
  87.    void near       *Strat;      /* offset of _strat */
  88.    void near        *IDC;       /* offset of IDC    */
  89.    unsigned char name[8];       /* name of driver   */
  90.    char reserved[8];            /* reserved.        */
  91. }  DeviceHeader;
  92.  
  93. typedef struct RQpacket {
  94.    unsigned char  req_pac_len;  /* length of packet */
  95.    unsigned char  req_unit;     /* use for BLOCK DD */
  96.    unsigned char  req_cmd;      /* which command... */
  97.    unsigned short req_stat;     /* returned status. */
  98.    unsigned long  req_resrvd;   /* for use by OS/2. */
  99.    unsigned long  req_link;     /* used for queueing*/
  100. }  ReqHeader;
  101.  
  102. typedef struct InitEnt {
  103.    ReqHeader        InitEntHdr; /* space for header */
  104.    unsigned char    units;      /* number of units. */
  105.    unsigned char far *DevHlp;   /* Address of DevHlp*/
  106.    unsigned char far *InitCmd;  /* ptr to commands. */
  107.    unsigned short   drive;      /* drive # block DD */
  108. }  InitEntry;
  109.  
  110. typedef struct InitExt {
  111.    ReqHeader        InitExtHdr; /* space for header */
  112.    unsigned char    units;      /* number of units. */
  113.    unsigned short   code_off;   /* offset of code.  */
  114.    unsigned short   data_off;   /* offset of data.  */
  115.    unsigned char far *BPBptr;   /* address of BPB.  */
  116. }  InitExit;
  117.  
  118. typedef struct Read {
  119.    ReqHeader        ReadHdr;    /* space for header */
  120.    unsigned char    media_des;  /* media descriptor */
  121.    unsigned long    buff_addr;  /* physical address */
  122.    unsigned short   count;      /* number of bytes  */
  123.    unsigned long    start_sel;  /* starting sel #   */
  124.    unsigned short   reserved;   /* for use by OS/2  */
  125. } DeviceRead;
  126.  
  127. typedef struct Write {
  128.    ReqHeader        WriteHdr;   /* space for header */
  129.    unsigned char    media_des;  /* media descriptor */
  130.    unsigned long    buff_addr;  /* physical address */
  131.    unsigned short   count;      /* number of bytes  */
  132.    unsigned long    start_sel;  /* starting sel #   */
  133.    unsigned short   reserved;   /* for use by OS/2  */
  134. } DeviceWrite;
  135.  
  136.  
  137.