home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 May / Pcwk0597.iso / borland / cb / setup / cbuilder / data.z / MMSYSTEM.INC < prev    next >
Text File  |  1997-02-28  |  60KB  |  1,488 lines

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;
  3. ;         MMSYSTEM.INC - Multimedia assembly language structures & constants
  4. ;
  5. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  6.  
  7. ;
  8. ;       C/C++ Run Time Library - Version 8.0
  9. ;       Copyright (c) 1991, 1997 by Borland International
  10. ;       All Rights Reserved.
  11.  
  12. ;     If defined, the following flags inhibit inclusion
  13. ;     of the indicated items:
  14. ;
  15. ;       MMNODRV          - Installable driver support
  16. ;       MMNOSOUND        - Sound support
  17. ;       MMNOWAVE         - Waveform support
  18. ;       MMNOMIDI         - MIDI support
  19. ;       MMNOAUX          - Auxiliary audio support
  20. ;       MMNOTIMER        - Timer support
  21. ;       MMNOJOY          - Joystick support
  22. ;       MMNOMCI          - MCI support
  23. ;       MMNOMMIO         - Multimedia file I/O support
  24. ;
  25.  
  26. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  27. ;
  28. ;                   General constants and data types
  29. ;
  30. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  31.  
  32. ; general constants
  33. MAXPNAMELEN        equ    32     ; max product name length (including NULL)
  34. MAXERRORLENGTH     equ    128    ; max error text length (including NULL)
  35.  
  36. ; MMTIME data structure
  37. MMTIME  struc
  38.     mmt_wType           dw    ?  ; indicates the contents of the union
  39.     mmt_TimeUnion       dd    ?  ; union
  40. MMTIME  ends
  41.  
  42. SMPTE struc
  43.     smpte_hour      db    ?  ; hours
  44.     smpte_min       db    ?  ; minutes
  45.     smpte_sec       db    ?  ; seconds
  46.     smpte_frame     db    ?  ; frames
  47.     smpte_fps       db    ?  ; frames per second
  48.     smpte_reserved  db    ?  ; pad
  49. SMPTE ends
  50.  
  51. ; types for wType field in MMTIME struct
  52. TIME_MS         equ    0001h   ; time in milliseconds
  53. TIME_SAMPLES    equ    0002h   ; number of wave samples
  54. TIME_BYTES      equ    0004h   ; current byte offset
  55. TIME_SMPTE      equ    0008h   ; SMPTE time
  56. TIME_MIDI       equ    0010h   ; MIDI time
  57.  
  58.  
  59. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  60. ;
  61. ;                   Multimedia Extensions Window Messages
  62. ;
  63. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  64.  
  65. MM_JOY1MOVE         equ    3A0h            ; joystick
  66. MM_JOY2MOVE         equ    3A1h
  67. MM_JOY1ZMOVE        equ    3A2h
  68. MM_JOY2ZMOVE        equ    3A3h
  69. MM_JOY1BUTTONDOWN   equ    3B5h
  70. MM_JOY2BUTTONDOWN   equ    3B6h
  71. MM_JOY1BUTTONUP     equ    3B7h
  72. MM_JOY2BUTTONUP     equ    3B8h
  73.  
  74. MM_MCINOTIFY        equ    3B9h            ; MCI
  75. MM_MCISYSTEM_STRING equ    3CAh
  76.  
  77. MM_WOM_OPEN         equ    3BBh            ; waveform output
  78. MM_WOM_CLOSE        equ    3BCh
  79. MM_WOM_DONE         equ    3BDh
  80.  
  81. MM_WIM_OPEN         equ    3BEh            ; waveform input
  82. MM_WIM_CLOSE        equ    3BFh
  83. MM_WIM_DATA         equ    3C0h
  84.  
  85. MM_MIM_OPEN         equ    3C1h            ; MIDI input
  86. MM_MIM_CLOSE        equ    3C2h
  87. MM_MIM_DATA         equ    3C3h
  88. MM_MIM_LONGDATA     equ    3C4h
  89. MM_MIM_ERROR        equ    3C5h
  90. MM_MIM_LONGERROR    equ    3C6h
  91.  
  92. MM_MOM_OPEN         equ    3C7h            ; MIDI output
  93. MM_MOM_CLOSE        equ    3C8h
  94. MM_MOM_DONE         equ    3C9h
  95.  
  96.  
  97. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  98. ;
  99. ;               String resource number bases (internal use)
  100. ;
  101. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  102.  
  103. MMSYSERR_BASE          equ    0
  104. WAVERR_BASE            equ    32
  105. MIDIERR_BASE           equ    64
  106. TIMERR_BASE            equ    96
  107. JOYERR_BASE            equ    160
  108. MCIERR_BASE            equ    256
  109.  
  110. MCI_STRING_OFFSET      equ    512
  111. MCI_VD_OFFSET          equ    1024
  112. MCI_CD_OFFSET          equ    1088
  113. MCI_WAVE_OFFSET        equ    1152
  114. MCI_SEQ_OFFSET         equ    1216
  115.  
  116. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  117. ;
  118. ;                       General error return values
  119. ;
  120. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  121.  
  122. ; general error return values
  123. MMSYSERR_NOERROR      equ    0                    ; no error
  124. MMSYSERR_ERROR        equ    (MMSYSERR_BASE + 1)  ; unspecified error
  125. MMSYSERR_BADDEVICEID  equ    (MMSYSERR_BASE + 2)  ; device ID out of range
  126. MMSYSERR_NOTENABLED   equ    (MMSYSERR_BASE + 3)  ; driver failed enable
  127. MMSYSERR_ALLOCATED    equ    (MMSYSERR_BASE + 4)  ; device already allocated
  128. MMSYSERR_INVALHANDLE  equ    (MMSYSERR_BASE + 5)  ; device handle is invalid
  129. MMSYSERR_NODRIVER     equ    (MMSYSERR_BASE + 6)  ; no device driver present
  130. MMSYSERR_NOMEM        equ    (MMSYSERR_BASE + 7)  ; memory allocation error
  131. MMSYSERR_NOTSUPPORTED equ    (MMSYSERR_BASE + 8)  ; function isn't supported
  132. MMSYSERR_BADERRNUM    equ    (MMSYSERR_BASE + 9)  ; error value out of range
  133. MMSYSERR_INVALFLAG    equ    (MMSYSERR_BASE + 10) ; invalid flags passed
  134. MMSYSERR_INVALPARAM   equ    (MMSYSERR_BASE + 11) ; invalid parameter passed
  135. MMSYSERR_LASTERROR    equ    (MMSYSERR_BASE + 11) ; last error in range
  136.  
  137.  
  138. ifndef MMNODRV
  139. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  140. ;
  141. ;                       Installable driver support
  142. ;
  143. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  144.  
  145. DRV_MCI_FIRST          equ    DRV_RESERVED
  146. DRV_MCI_LAST           equ    (DRV_RESERVED + 0FFFh)
  147.  
  148. endif  ;ifndef MMNODRV
  149.  
  150.  
  151. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  152. ;
  153. ;                         Driver callback support
  154. ;
  155. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  156.  
  157. ; flags used with waveOutOpen(), waveInOpen(), midiInOpen(), and
  158. ; midiOutOpen() to specify the type of the dwCallback parameter.
  159. CALLBACK_TYPEMASK   equ    00070000h     ; callback type mask
  160. CALLBACK_NULL       equ    00000000h     ; no callback
  161. CALLBACK_WINDOW     equ    00010000h     ; dwCallback is a HWND
  162. CALLBACK_TASK       equ    00020000h     ; dwCallback is a HTASK
  163. CALLBACK_FUNCTION   equ    00030000h     ; dwCallback is a FARPROC
  164.  
  165. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  166. ;
  167. ;                        Manufacturer and product IDs
  168. ;
  169. ;   Used with wMid and wPid fields in WAVEOUTCAPS, WAVEINCAPS,
  170. ;   MIDIOUTCAPS, MIDIINCAPS, AUXCAPS, JOYCAPS structures.
  171. ;
  172. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  173.  
  174. ; manufacturer IDs
  175. MM_MICROSOFT            equ    1       ; Microsoft Corp.
  176.  
  177. ; product IDs
  178. MM_MIDI_MAPPER          equ    1       ; MIDI Mapper
  179. MM_WAVE_MAPPER          equ    2       ; Wave Mapper
  180.  
  181. MM_SNDBLST_MIDIOUT      equ    3       ; Sound Blaster MIDI output port
  182. MM_SNDBLST_MIDIIN       equ    4       ; Sound Blaster MIDI input port
  183. MM_SNDBLST_SYNTH        equ    5       ; Sound Blaster internal synthesizer
  184. MM_SNDBLST_WAVEOUT      equ    6       ; Sound Blaster waveform output
  185. MM_SNDBLST_WAVEIN       equ    7       ; Sound Blaster waveform input
  186.  
  187. MM_ADLIB                equ    9       ; Ad Lib-compatible synthesizer
  188.  
  189. MM_MPU401_MIDIOUT       equ    10      ; MPU401-compatible MIDI output port
  190. MM_MPU401_MIDIIN        equ    11      ; MPU401-compatible MIDI input port
  191.  
  192. MM_PC_JOYSTICK          equ    12      ; Joystick adapter
  193.  
  194.  
  195. ifndef MMNOSOUND
  196. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  197. ;
  198. ;                           Sound support
  199. ;
  200. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  201.  
  202. ; flag values for wFlags parameter
  203. SND_SYNC            equ    0000h   ; play synchronously (default)
  204. SND_ASYNC           equ    0001h   ; play asynchronously
  205. SND_NODEFAULT       equ    0002h   ; don't use default sound
  206. SND_MEMORY          equ    0004h   ; lpszSoundName points to a memory file
  207. SND_LOOP            equ    0008h   ; loop the sound until next sndPlaySound
  208. SND_NOSTOP          equ    0010h   ; don't stop any currently playing sound
  209.  
  210. endif  ;ifndef MMNOSOUND
  211.  
  212.  
  213. ifndef MMNOWAVE
  214. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  215. ;
  216. ;                       Waveform audio support
  217. ;
  218. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  219.  
  220. ; waveform audio error return values
  221. WAVERR_BADFORMAT      equ    (WAVERR_BASE + 0)    ; unsupported wave format
  222. WAVERR_STILLPLAYING   equ    (WAVERR_BASE + 1)    ; still something playing
  223. WAVERR_UNPREPARED     equ    (WAVERR_BASE + 2)    ; header not prepared
  224. WAVERR_SYNC           equ    (WAVERR_BASE + 3)    ; device is synchronous
  225. WAVERR_LASTERROR      equ    (WAVERR_BASE + 3)    ; last error in range
  226.  
  227. ; wave callback messages
  228. WOM_OPEN        equ    MM_WOM_OPEN
  229. WOM_CLOSE       equ    MM_WOM_CLOSE
  230. WOM_DONE        equ    MM_WOM_DONE
  231. WIM_OPEN        equ    MM_WIM_OPEN
  232. WIM_CLOSE       equ    MM_WIM_CLOSE
  233. WIM_DATA        equ    MM_WIM_DATA
  234.  
  235. ; device ID for wave device mapper
  236. WAVE_MAPPER     equ    (-1)
  237.  
  238. ; flags for dwFlags parameter in waveOutOpen() and waveInOpen()
  239. WAVE_FORMAT_QUERY     equ    0001h
  240. WAVE_ALLOWSYNC        equ    0002h
  241.  
  242. ; wave data block header
  243. WAVEHDR struc
  244.     lpWaveData               dd    ?     ; pointer to locked data buffer
  245.     dwWaveBufferLength       dd    ?     ; length of data buffer
  246.     dwWaveBytesRecorded      dd    ?     ; used for input only
  247.     dwWaveUser               dd    ?     ; for client's use
  248.     dwWaveFlags              dd    ?     ; assorted flags (see defines)
  249.     dwWaveLoops              dd    ?     ; loop control counter
  250.     lpWaveNext               dd    ?     ; reserved for driver
  251.     Wavereserved             dd    ?     ; reserved for driver
  252. WAVEHDR ends
  253.  
  254. ; flags for dwFlags field of WAVEHDR
  255. WHDR_DONE       equ    00000001h   ; done bit
  256. WHDR_PREPARED   equ    00000002h   ; set if this header has been prepared
  257. WHDR_BEGINLOOP  equ    00000004h   ; loop start block
  258. WHDR_ENDLOOP    equ    00000008h   ; loop end block
  259. WHDR_INQUEUE    equ    00000010h   ; reserved for driver
  260.  
  261. ; waveform output device capabilities structure
  262. WAVEOUTCAPS struc
  263.     woc_wMid            dw      ?      ; manufacturer ID
  264.     woc_wPid            dw      ?      ; product ID
  265.     woc_vDriverVersion  dw      ?      ; version of the driver
  266.     woc_szPname         db MAXPNAMELEN dup (?)  ; product name (NULL terminated string)
  267.     woc_dwFormats       dd      ?      ; formats supported
  268.     woc_wChannels       dw      ?      ; number of sources supported
  269.     woc_dwSupport       dd      ?      ; functionality supported by driver
  270. WAVEOUTCAPS ends
  271.  
  272. ; flags for dwSupport field of WAVEOUTCAPS
  273. WAVECAPS_PITCH          equ    0001h    ; supports pitch control
  274. WAVECAPS_PLAYBACKRATE   equ    0002h    ; supports playback rate control
  275. WAVECAPS_VOLUME         equ    0004h    ; supports volume control
  276. WAVECAPS_LRVOLUME       equ    0008h    ; separate left-right volume control
  277. WAVECAPS_SYNC           equ    0010h
  278.  
  279. ; waveform input device capabilities structure
  280. WAVEINCAPS struc
  281.     wic_wMid            dw      ?      ; manufacturer ID
  282.     wic_wPid            dw      ?      ; product ID
  283.     wic_vDriverVersion  dw      ?      ; version of the driver
  284.     wic_szPname         db MAXPNAMELEN dup (?)  ; product name (NULL terminated string)
  285.     wic_dwFormats       dd      ?      ; formats supported
  286.     wic_wChannels       dw      ?      ; number of channels supported
  287. WAVEINCAPS ends
  288.  
  289. ; defines for dwFormat field of WAVEINCAPS and WAVEOUTCAPS
  290. WAVE_INVALIDFORMAT     equ    00000000h        ; invalid format
  291. WAVE_FORMAT_1M08       equ    00000001h        ; 11.025 kHz, Mono,   8-bit
  292. WAVE_FORMAT_1S08       equ    00000002h        ; 11.025 kHz, Stereo, 8-bit
  293. WAVE_FORMAT_1M16       equ    00000004h        ; 11.025 kHz, Mono,   16-bit
  294. WAVE_FORMAT_1S16       equ    00000008h        ; 11.025 kHz, Stereo, 16-bit
  295. WAVE_FORMAT_2M08       equ    00000010h        ; 22.05  kHz, Mono,   8-bit
  296. WAVE_FORMAT_2S08       equ    00000020h        ; 22.05  kHz, Stereo, 8-bit
  297. WAVE_FORMAT_2M16       equ    00000040h        ; 22.05  kHz, Mono,   16-bit
  298. WAVE_FORMAT_2S16       equ    00000080h        ; 22.05  kHz, Stereo, 16-bit
  299. WAVE_FORMAT_4M08       equ    00000100h        ; 44.1   kHz, Mono,   8-bit
  300. WAVE_FORMAT_4S08       equ    00000200h        ; 44.1   kHz, Stereo, 8-bit
  301. WAVE_FORMAT_4M16       equ    00000400h        ; 44.1   kHz, Mono,   16-bit
  302. WAVE_FORMAT_4S16       equ    00000800h        ; 44.1   kHz, Stereo, 16-bit
  303.  
  304. ; general waveform format structure (information common to all formats)
  305. WAVEFORMAT struc
  306.     wfmt_wFormatTag       dw    ?   ; format type
  307.     wfmt_nChannels        dw    ?   ; number of channels (i.e. mono, stereo, etc.)
  308.     wfmt_nSamplesPerSec   dd    ?   ; sample rate
  309.     wfmt_nAvgBytesPerSec  dd    ?   ; for buffer estimation
  310.     wfmt_nBlockAlign      dw    ?   ; block size of data
  311. WAVEFORMAT ends
  312.  
  313. ; flags for wFormatTag field of WAVEFORMAT
  314. WAVE_FORMAT_PCM     equ    1
  315.  
  316. ; specific waveform format structure for PCM data
  317. PCMWAVEFORMAT struc
  318.     pcm_wf               db (SIZE WAVEFORMAT) dup (?)
  319.     pcm_wBitsPerSample   dw    ?
  320. PCMWAVEFORMAT ends
  321.  
  322. endif  ;ifndef MMNOWAVE
  323.  
  324.  
  325. ifndef MMNOMIDI
  326. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  327. ;
  328. ;                           MIDI audio support
  329. ;
  330. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  331.  
  332. ; MIDI error return values
  333. MIDIERR_UNPREPARED    equ    (MIDIERR_BASE + 0)   ; header not prepared
  334. MIDIERR_STILLPLAYING  equ    (MIDIERR_BASE + 1)   ; still something playing
  335. MIDIERR_NOMAP         equ    (MIDIERR_BASE + 2)   ; no current map
  336. MIDIERR_NOTREADY      equ    (MIDIERR_BASE + 3)   ; hardware is still busy
  337. MIDIERR_NODEVICE      equ    (MIDIERR_BASE + 4)   ; port no longer connected
  338. MIDIERR_INVALIDSETUP  equ    (MIDIERR_BASE + 5)   ; invalid setup
  339. MIDIERR_LASTERROR     equ    (MIDIERR_BASE + 5)   ; last error in range
  340.  
  341. ; MIDI audio data types
  342. MIDIPATCHSIZE   equ    128
  343.  
  344. ; MIDI callback messages
  345. MIM_OPEN        equ    MM_MIM_OPEN
  346. MIM_CLOSE       equ    MM_MIM_CLOSE
  347. MIM_DATA        equ    MM_MIM_DATA
  348. MIM_LONGDATA    equ    MM_MIM_LONGDATA
  349. MIM_ERROR       equ    MM_MIM_ERROR
  350. MIM_LONGERROR   equ    MM_MIM_LONGERROR
  351. MOM_OPEN        equ    MM_MOM_OPEN
  352. MOM_CLOSE       equ    MM_MOM_CLOSE
  353. MOM_DONE        equ    MM_MOM_DONE
  354.  
  355. ; device ID for MIDI mapper
  356. MIDIMAPPER     equ    (-1)
  357. MIDI_MAPPER    equ    (-1)
  358.  
  359. ; flags for wFlags parm of midiOutCachePatches(),
  360. ; midiOutCacheDrumPatches()
  361. MIDI_CACHE_ALL      equ    1
  362. MIDI_CACHE_BESTFIT  equ    2
  363. MIDI_CACHE_QUERY    equ    3
  364. MIDI_UNCACHE        equ    4
  365.  
  366. ; MIDI output device capabilities structure
  367. MIDIOUTCAPS struc
  368.     moc_wMid            dw    ?        ; manufacturer ID
  369.     moc_wPid            dw    ?        ; product ID
  370.     moc_vDriverVersion  dw    ?        ; version of the driver
  371.     moc_szPname         db MAXPNAMELEN dup (?) ; product name (NULL terminated string)
  372.     moc_wTechnology     dw    ?        ; type of device
  373.     moc_wVoices         dw    ?        ; # of voices (internal synth only)
  374.     moc_wNotes          dw    ?        ; max # of notes (internal synth only)
  375.     moc_wChannelMask    dw    ?        ; channels used (internal synth only)
  376.     moc_dwSupport       dd    ?        ; functionality supported by driver
  377. MIDIOUTCAPS ends
  378.  
  379. ; flags for wTechnology field of MIDIOUTCAPS structure
  380. MOD_MIDIPORT    equ    1  ; output port
  381. MOD_SYNTH       equ    2  ; generic internal synth
  382. MOD_SQSYNTH     equ    3  ; square wave internal synth
  383. MOD_FMSYNTH     equ    4  ; FM internal synth
  384. MOD_MAPPER      equ    5  ; MIDI mapper
  385.  
  386. ; flags for dwSupport field of MIDIOUTCAPS structure
  387. MIDICAPS_VOLUME          equ    0001h   ; supports volume control
  388. MIDICAPS_LRVOLUME        equ    0002h   ; separate left-right volume control
  389. MIDICAPS_CACHE           equ    0004h
  390.  
  391. ; MIDI output device capabilities structure
  392. MIDIINCAPS struc
  393.     mic_wMid            dw    ?       ; manufacturer ID
  394.     mic_wPid            dw    ?       ; product ID
  395.     mic_vDriverVersion  dw    ?       ; version of the driver
  396.     mic_szPname         db MAXPNAMELEN dup (?) ; product name (NULL terminated string)
  397. MIDIINCAPS ends
  398.  
  399. ; MIDI data block header
  400. MIDIHDR struc
  401.     lpMidiData            dd    ?      ; pointer to locked data block
  402.     dwMidiBufferLength    dd    ?      ; length of data in data block
  403.     dwMidiBytesRecorded   dd    ?      ; used for input only
  404.     dwMidiUser            dd    ?      ; for client's use
  405.     dwMidiFlags           dd    ?      ; assorted flags (see defines)
  406.     lpMidiNext            dd    ?      ; reserved for driver
  407.     Midireserved          dd    ?      ; reserved for driver
  408. MIDIHDR ends
  409.  
  410. ; flags for dwFlags field of MIDIHDR structure
  411. MHDR_DONE       equ    00000001h        ; done bit
  412. MHDR_PREPARED   equ    00000002h        ; set if header prepared
  413. MHDR_INQUEUE    equ    00000004h        ; reserved for driver
  414.  
  415. endif  ;ifndef MMNOMIDI
  416.  
  417.  
  418. ifndef MMNOAUX
  419. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  420. ;
  421. ;                       Auxiliary audio support
  422. ;
  423. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  424.  
  425. ; device ID for aux device mapper
  426. AUX_MAPPER     equ    (-1)
  427.  
  428. ; Auxiliary audio device capabilities structure
  429. AUXCAPS struc
  430.     acaps_wMid              dw    ?      ; manufacturer ID
  431.     acaps_wPid              dw    ?      ; product ID
  432.     acaps_vDriverVersion    dw    ?      ; version of the driver
  433.     acaps_szPname           db MAXPNAMELEN dup (?) ; product name (NULL terminated string)
  434.     acaps_wTechnology       dw    ?      ; type of device
  435.     acaps_dwSupport         dd    ?      ; functionality supported by driver
  436. AUXCAPS ends
  437.  
  438. ; flags for wTechnology field in AUXCAPS structure
  439. AUXCAPS_CDAUDIO    equ    1       ; audio from internal CD-ROM drive
  440. AUXCAPS_AUXIN      equ    2       ; audio from auxiliary input jacks
  441.  
  442. ; flags for dwSupport field in AUXCAPS structure
  443. AUXCAPS_VOLUME          equ    0001h   ; supports volume control
  444. AUXCAPS_LRVOLUME        equ    0002h   ; separate left-right volume control
  445.  
  446. endif  ;ifndef MMNOAUX
  447.  
  448.  
  449. ifndef MMNOTIMER
  450. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  451. ;
  452. ;                           Timer support
  453. ;
  454. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  455.  
  456. ; timer error return values
  457. TIMERR_NOERROR        equ    (0)                  ; no error
  458. TIMERR_NOCANDO        equ    (TIMERR_BASE+1)      ; request not completed
  459. TIMERR_STRUCT         equ    (TIMERR_BASE+33)     ; time struct size
  460.  
  461. ; flags for wFlags parameter of timeSetEvent() function
  462. TIME_ONESHOT    equ    0   ; program timer for single event
  463. TIME_PERIODIC   equ    1   ; program for continuous periodic event
  464.  
  465. ; timer device capabilities data structure
  466. TIMECAPS struc
  467.     tc_wPeriodMin    dw    ?     ; minimum period supported
  468.     tc_wPeriodMax    dw    ?     ; maximum period supported
  469. TIMECAPS ends
  470.  
  471. endif  ;ifndef MMNOTIMER
  472.  
  473.  
  474. ifndef MMNOJOY
  475. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  476. ;
  477. ;                           Joystick support
  478. ;
  479. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  480.  
  481. ; joystick error return values
  482. JOYERR_NOERROR        equ    (0)                  ; no error
  483. JOYERR_PARMS          equ    (JOYERR_BASE+5)      ; bad parameters
  484. JOYERR_NOCANDO        equ    (JOYERR_BASE+6)      ; request not completed
  485. JOYERR_UNPLUGGED      equ    (JOYERR_BASE+7)      ; joystick is unplugged
  486.  
  487. ; constants used with JOYINFO structure and MM_JOY* messages
  488. JOY_BUTTON1         equ    0001h
  489. JOY_BUTTON2         equ    0002h
  490. JOY_BUTTON3         equ    0004h
  491. JOY_BUTTON4         equ    0008h
  492. JOY_BUTTON1CHG      equ    0100h
  493. JOY_BUTTON2CHG      equ    0200h
  494. JOY_BUTTON3CHG      equ    0400h
  495. JOY_BUTTON4CHG      equ    0800h
  496.  
  497. ; joystick ID constants
  498. JOYSTICKID1         equ    0
  499. JOYSTICKID2         equ    1
  500.  
  501. ; joystick device capabilities data structure
  502. JOYCAPS struc
  503.     jcaps_wMid         dw    ?    ; manufacturer ID
  504.     jcaps_wPid         dw    ?    ; product ID
  505.     jcaps_szPname      db MAXPNAMELEN dup (?) ; product name (NULL terminated string)
  506.     jcaps_wXmin        dw    ?    ; minimum x position value
  507.     jcaps_wXmax        dw    ?    ; maximum x position value
  508.     jcaps_wYmin        dw    ?    ; minimum y position value
  509.     jcaps_wYmax        dw    ?    ; maximum y position value
  510.     jcaps_wZmin        dw    ?    ; minimum z position value
  511.     jcaps_wZmax        dw    ?    ; maximum z position value
  512.     jcaps_wNumButtons  dw    ?    ; number of buttons
  513.     jcaps_wPeriodMin   dw    ?    ; minimum message period when captured
  514.     jcaps_wPeriodMax   dw    ?    ; maximum message period when captured
  515. JOYCAPS ends
  516.  
  517. ; joystick information data structure
  518. JOYINFO struc
  519.     jinfo_wXpos        dw    ?  ; x position
  520.     jinfo_wYpos        dw    ?  ; y position
  521.     jinfo_wZpos        dw    ?  ; z position
  522.     jinfo_wButtons     dw    ?  ; button states
  523. JOYINFO ends
  524.  
  525. endif  ;ifndef MMNOJOY
  526.  
  527. ifndef MMNOMMIO
  528. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  529. ;
  530. ;                       Multimedia File I/O support
  531. ;
  532. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  533.  
  534. ; MMIO error return values
  535. MMIOERR_BASE            equ    256
  536. MMIOERR_FILENOTFOUND    equ    (MMIOERR_BASE + 1)  ; file not found
  537. MMIOERR_OUTOFMEMORY     equ    (MMIOERR_BASE + 2)  ; out of memory
  538. MMIOERR_CANNOTOPEN      equ    (MMIOERR_BASE + 3)  ; cannot open
  539. MMIOERR_CANNOTCLOSE     equ    (MMIOERR_BASE + 4)  ; cannot close
  540. MMIOERR_CANNOTREAD      equ    (MMIOERR_BASE + 5)  ; cannot read
  541. MMIOERR_CANNOTWRITE     equ    (MMIOERR_BASE + 6)  ; cannot write
  542. MMIOERR_CANNOTSEEK      equ    (MMIOERR_BASE + 7)  ; cannot seek
  543. MMIOERR_CANNOTEXPAND    equ    (MMIOERR_BASE + 8)  ; cannot expand file
  544. MMIOERR_CHUNKNOTFOUND   equ    (MMIOERR_BASE + 9)  ; chunk not found
  545. MMIOERR_UNBUFFERED      equ    (MMIOERR_BASE + 10) ; file is unbuffered
  546.  
  547. ; MMIO constants
  548. CFSEPCHAR    equ   '+'             ; compound file name separator char.
  549.  
  550. ; general MMIO information data structure
  551. MMIOINFO struc
  552.         ; general fields
  553.     mmio_dwFlags        dd    ?      ; general status flags
  554.     mmio_fccIOProc      dd    ?      ; pointer to I/O procedure
  555.     mmio_pIOProc        dd    ?      ; pointer to I/O procedure
  556.     mmio_wErrorRet      dw    ?      ; place for error to be returned
  557.     mmio_htask          dw    ?      ; alternate local task
  558.  
  559.         ; fields maintained by MMIO functions during buffered I/O
  560.     mmio_cchBuffer      dd    ?      ; size of I/O buffer (or 0L)
  561.     mmio_pchBuffer      dd    ?      ; start of I/O buffer (or NULL)
  562.     mmio_pchNext        dd    ?      ; pointer to next byte to read/write
  563.     mmio_pchEndRead     dd    ?      ; pointer to last valid byte to read
  564.     mmio_pchEndWrite    dd    ?      ; pointer to last byte to write
  565.     mmio_lBufOffset     dd    ?      ; disk offset of start of buffer
  566.  
  567.         ; fields maintained by I/O procedure
  568.     mmio_lDiskOffset    dd    ?      ; disk offset of next read or write
  569.     mmio_adwInfo        dd 3 dup (?) ; data specific to type of MMIOPROC
  570.  
  571.         ; other fields maintained by MMIO
  572.     mmio_dwReserved1    dd    ?      ; reserved for MMIO use
  573.     mmio_dwReserved2    dd    ?      ; reserved for MMIO use
  574.     mmio_hmmio          dw    ?      ; handle to open file
  575. MMIOINFO ends
  576.  
  577. ; RIFF chunk information data structure
  578. MMCKINFO struc
  579.     mmck_ckid          dd    ?  ; chunk ID
  580.     mmck_cksize        dd    ?  ; chunk size
  581.     mmck_fccType       dd    ?  ; form type or list type
  582.     mmck_dwDataOffset  dd    ?  ; offset of data portion of chunk
  583.     mmck_dwFlags       dd    ?  ; flags used by MMIO functions
  584. MMCKINFO ends
  585.  
  586. ; bit field masks
  587. MMIO_RWMODE     equ    00000003h       ; open file for reading/writing/both
  588. MMIO_SHAREMODE  equ    00000070h       ; file sharing mode number
  589.  
  590. ; constants for dwFlags field of MMIOINFO
  591. MMIO_CREATE     equ    00001000h       ; create new file (or truncate file)
  592. MMIO_PARSE      equ    00000100h       ; parse new file returning path
  593. MMIO_DELETE     equ    00000200h       ; create new file (or truncate file)
  594. MMIO_EXIST      equ    00004000h       ; checks for existence of file
  595. MMIO_ALLOCBUF   equ    00010000h       ; mmioOpen() should allocate a buffer
  596. MMIO_GETTEMP    equ    00020000h       ; mmioOpen() should retrieve temp name
  597.  
  598. MMIO_DIRTY      equ    10000000h       ; I/O buffer is dirty
  599.  
  600.  
  601. ; read/write mode numbers (bit field MMIO_RWMODE)
  602. MMIO_READ       equ    00000000h       ; open file for reading only
  603. MMIO_WRITE      equ    00000001h       ; open file for writing only
  604. MMIO_READWRITE  equ    00000002h       ; open file for reading and writing
  605.  
  606. ; share mode numbers (bit field MMIO_SHAREMODE)
  607. MMIO_COMPAT     equ    00000000h       ; compatibility mode
  608. MMIO_EXCLUSIVE  equ    00000010h       ; exclusive-access mode
  609. MMIO_DENYWRITE  equ    00000020h       ; deny writing to other processes
  610. MMIO_DENYREAD   equ    00000030h       ; deny reading to other processes
  611. MMIO_DENYNONE   equ    00000040h       ; deny nothing to other processes
  612.  
  613. ; various MMIO flags
  614. MMIO_FHOPEN             equ    0010h   ; mmioClose: keep file handle open
  615. MMIO_EMPTYBUF           equ    0010h   ; mmioFlush: empty the I/O buffer
  616. MMIO_TOUPPER            equ    0010h   ; mmioStringToFOURCC: to u-case
  617. MMIO_INSTALLPROC    equ    00010000h   ; mmioInstallIOProc: install MMIOProc
  618. MMIO_GLOBALPROC     equ    10000000h   ; mmioInstallIOProc: install globally
  619. MMIO_REMOVEPROC     equ    00020000h   ; mmioInstallIOProc: remove MMIOProc
  620. MMIO_FINDPROC       equ    00040000h   ; mmioInstallIOProc: find an MMIOProc
  621. MMIO_FINDCHUNK          equ    0010h   ; mmioDescend: find a chunk by ID
  622. MMIO_FINDRIFF           equ    0020h   ; mmioDescend: find a LIST chunk
  623. MMIO_FINDLIST           equ    0040h   ; mmioDescend: find a RIFF chunk
  624. MMIO_CREATERIFF         equ    0020h   ; mmioCreateChunk: make a LIST chunk
  625. MMIO_CREATELIST         equ    0040h   ; mmioCreateChunk: make a RIFF chunk
  626.  
  627.  
  628. ; message numbers for MMIOPROC I/O procedure functions
  629. MMIOM_READ      equ    MMIO_READ       ; read
  630. MMIOM_WRITE    equ    MMIO_WRITE       ; write
  631. MMIOM_SEEK              equ    2       ; seek to a new position in file
  632. MMIOM_OPEN              equ    3       ; open file
  633. MMIOM_CLOSE             equ    4       ; close file
  634. MMIOM_WRITEFLUSH        equ    5       ; write and flush
  635. MMIOM_RENAME            equ    6       ; rename specified file
  636. MMIOM_USER         equ    8000h        ; beginning of user-defined messages
  637.  
  638. mmioFOURCC MACRO ch0,ch1,ch2,ch3
  639.         mov     al,ch0
  640.         mov     ah,ch1
  641.         mov     dl,ch2
  642.         mov     dh,ch3
  643.         ENDM
  644.  
  645. ; standard four character codes
  646. ; FOURCC_RIFF     equ    mmioFOURCC('R', 'I', 'F', 'F')
  647. ; FOURCC_LIST     equ    mmioFOURCC('L', 'I', 'S', 'T')
  648.  
  649. ; four character codes used to identify standard built-in I/O procedures
  650. ; FOURCC_DOS      equ    mmioFOURCC('D', 'O', 'S', ' ')
  651. ; FOURCC_MEM      equ    mmioFOURCC('M', 'E', 'M', ' ')
  652.  
  653. ; flags for mmioSeek()
  654. ifndef SEEK_SET
  655. SEEK_SET        equ    0               ; seek to an absolute position
  656. SEEK_CUR        equ    1               ; seek relative to current position
  657. SEEK_END        equ    2               ; seek relative to end of file
  658. endif  ;ifndef SEEK_SET
  659.  
  660. ; other constants
  661. MMIO_DEFAULTBUFFER      equ    8192    ; default buffer size
  662.  
  663. endif   ;ifndef MMNOMMIO
  664.  
  665. ifndef MMNOMCI
  666. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  667. ;
  668. ;                           MCI support
  669. ;
  670. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  671.  
  672. ; MCI error return values
  673. MCIERR_INVALID_DEVICE_ID        equ    (MCIERR_BASE + 1)
  674. MCIERR_UNRECOGNIZED_KEYWORD     equ    (MCIERR_BASE + 3)
  675. MCIERR_UNRECOGNIZED_COMMAND     equ    (MCIERR_BASE + 5)
  676. MCIERR_HARDWARE                 equ    (MCIERR_BASE + 6)
  677. MCIERR_INVALID_DEVICE_NAME      equ    (MCIERR_BASE + 7)
  678. MCIERR_OUT_OF_MEMORY            equ    (MCIERR_BASE + 8)
  679. MCIERR_DEVICE_OPEN              equ    (MCIERR_BASE + 9)
  680. MCIERR_CANNOT_LOAD_DRIVER       equ    (MCIERR_BASE + 10)
  681. MCIERR_MISSING_COMMAND_STRING   equ    (MCIERR_BASE + 11)
  682. MCIERR_PARAM_OVERFLOW           equ    (MCIERR_BASE + 12)
  683. MCIERR_MISSING_STRING_ARGUMENT  equ    (MCIERR_BASE + 13)
  684. MCIERR_BAD_INTEGER              equ    (MCIERR_BASE + 14)
  685. MCIERR_PARSER_INTERNAL          equ    (MCIERR_BASE + 15)
  686. MCIERR_DRIVER_INTERNAL          equ    (MCIERR_BASE + 16)
  687. MCIERR_MISSING_PARAMETER        equ    (MCIERR_BASE + 17)
  688. MCIERR_UNSUPPORTED_FUNCTION     equ    (MCIERR_BASE + 18)
  689. MCIERR_FILE_NOT_FOUND           equ    (MCIERR_BASE + 19)
  690. MCIERR_DEVICE_NOT_READY         equ    (MCIERR_BASE + 20)
  691. MCIERR_INTERNAL                 equ    (MCIERR_BASE + 21)
  692. MCIERR_DRIVER                   equ    (MCIERR_BASE + 22)
  693. MCIERR_CANNOT_USE_ALL           equ    (MCIERR_BASE + 23)
  694. MCIERR_MULTIPLE                 equ    (MCIERR_BASE + 24)
  695. MCIERR_EXTENSION_NOT_FOUND      equ    (MCIERR_BASE + 25)
  696. MCIERR_OUTOFRANGE               equ    (MCIERR_BASE + 26)
  697. MCIERR_FLAGS_NOT_COMPATIBLE     equ    (MCIERR_BASE + 28)
  698. MCIERR_FILE_NOT_SAVED           equ    (MCIERR_BASE + 30)
  699. MCIERR_DEVICE_TYPE_REQUIRED     equ    (MCIERR_BASE + 31)
  700. MCIERR_DEVICE_LOCKED            equ    (MCIERR_BASE + 32)
  701. MCIERR_DUPLICATE_ALIAS          equ    (MCIERR_BASE + 33)
  702. MCIERR_BAD_CONSTANT             equ    (MCIERR_BASE + 34)
  703. MCIERR_MUST_USE_SHAREABLE       equ    (MCIERR_BASE + 35)
  704. MCIERR_MISSING_DEVICE_NAME      equ    (MCIERR_BASE + 36)
  705. MCIERR_BAD_TIME_FORMAT          equ    (MCIERR_BASE + 37)
  706. MCIERR_NO_CLOSING_QUOTE         equ    (MCIERR_BASE + 38)
  707. MCIERR_DUPLICATE_FLAGS          equ    (MCIERR_BASE + 39)
  708. MCIERR_INVALID_FILE             equ    (MCIERR_BASE + 40)
  709. MCIERR_NULL_PARAMETER_BLOCK     equ    (MCIERR_BASE + 41)
  710. MCIERR_UNNAMED_RESOURCE         equ    (MCIERR_BASE + 42)
  711. MCIERR_NEW_REQUIRES_ALIAS       equ    (MCIERR_BASE + 43)
  712. MCIERR_NOTIFY_ON_AUTO_OPEN      equ    (MCIERR_BASE + 44)
  713. MCIERR_NO_ELEMENT_ALLOWED       equ    (MCIERR_BASE + 45)
  714. MCIERR_NONAPPLICABLE_FUNCTION   equ    (MCIERR_BASE + 46)
  715. MCIERR_ILLEGAL_FOR_AUTO_OPEN    equ    (MCIERR_BASE + 47)
  716. MCIERR_FILENAME_REQUIRED        equ    (MCIERR_BASE + 48)
  717. MCIERR_EXTRA_CHARACTERS         equ    (MCIERR_BASE + 49)
  718. MCIERR_DEVICE_NOT_INSTALLED     equ    (MCIERR_BASE + 50)
  719. MCIERR_GET_CD                   equ    (MCIERR_BASE + 51)
  720. MCIERR_SET_CD                   equ    (MCIERR_BASE + 52)
  721. MCIERR_SET_DRIVE                equ    (MCIERR_BASE + 53)
  722. MCIERR_DEVICE_LENGTH            equ    (MCIERR_BASE + 54)
  723. MCIERR_DEVICE_ORD_LENGTH        equ    (MCIERR_BASE + 55)
  724. MCIERR_NO_INTEGER               equ    (MCIERR_BASE + 56)
  725.  
  726. MCIERR_WAVE_OUTPUTSINUSE        equ    (MCIERR_BASE + 64)
  727. MCIERR_WAVE_SETOUTPUTINUSE      equ    (MCIERR_BASE + 65)
  728. MCIERR_WAVE_INPUTSINUSE         equ    (MCIERR_BASE + 66)
  729. MCIERR_WAVE_SETINPUTINUSE       equ    (MCIERR_BASE + 67)
  730. MCIERR_WAVE_OUTPUTUNSPECIFIED   equ    (MCIERR_BASE + 68)
  731. MCIERR_WAVE_INPUTUNSPECIFIED    equ    (MCIERR_BASE + 69)
  732. MCIERR_WAVE_OUTPUTSUNSUITABLE   equ    (MCIERR_BASE + 70)
  733. MCIERR_WAVE_SETOUTPUTUNSUITABLE equ    (MCIERR_BASE + 71)
  734. MCIERR_WAVE_INPUTSUNSUITABLE    equ    (MCIERR_BASE + 72)
  735. MCIERR_WAVE_SETINPUTUNSUITABLE  equ    (MCIERR_BASE + 73)
  736.  
  737. MCIERR_SEQ_DIV_INCOMPATIBLE     equ    (MCIERR_BASE + 80)
  738. MCIERR_SEQ_PORT_INUSE           equ    (MCIERR_BASE + 81)
  739. MCIERR_SEQ_PORT_NONEXISTENT     equ    (MCIERR_BASE + 82)
  740. MCIERR_SEQ_PORT_MAPNODEVICE     equ    (MCIERR_BASE + 83)
  741. MCIERR_SEQ_PORT_MISCERROR       equ    (MCIERR_BASE + 84)
  742. MCIERR_SEQ_TIMER                equ    (MCIERR_BASE + 85)
  743. MCIERR_SEQ_PORTUNSPECIFIED      equ    (MCIERR_BASE + 86)
  744. MCIERR_SEQ_NOMIDIPRESENT        equ    (MCIERR_BASE + 87)
  745.  
  746. MCIERR_NO_WINDOW                equ    (MCIERR_BASE + 90)
  747. MCIERR_CREATEWINDOW             equ    (MCIERR_BASE + 91)
  748. MCIERR_FILE_READ                equ    (MCIERR_BASE + 92)
  749. MCIERR_FILE_WRITE               equ    (MCIERR_BASE + 93)
  750.  
  751. ; all custom device driver errors must be >= than this value
  752. MCIERR_CUSTOM_DRIVER_BASE       equ    (MCIERR_BASE + 256)
  753.  
  754. ; MCI command message identifiers
  755. MCI_OPEN                        equ    0803h
  756. MCI_CLOSE                       equ    0804h
  757. MCI_ESCAPE                      equ    0805h
  758. MCI_PLAY                        equ    0806h
  759. MCI_SEEK                        equ    0807h
  760. MCI_STOP                        equ    0808h
  761. MCI_PAUSE                       equ    0809h
  762. MCI_INFO                        equ    080Ah
  763. MCI_GETDEVCAPS                  equ    080Bh
  764. MCI_SPIN                        equ    080Ch
  765. MCI_SET                         equ    080Dh
  766. MCI_STEP                        equ    080Eh
  767. MCI_RECORD                      equ    080Fh
  768. MCI_SYSINFO                     equ    0810h
  769. MCI_BREAK                       equ    0811h
  770. MCI_SOUND                       equ    0812h
  771. MCI_SAVE                        equ    0813h
  772. MCI_STATUS                      equ    0814h
  773. MCI_CUE                         equ    0830h
  774. MCI_REALIZE                     equ    0840h
  775. MCI_WINDOW                      equ    0841h
  776. MCI_PUT                         equ    0842h
  777. MCI_WHERE                       equ    0843h
  778. MCI_FREEZE                      equ    0844h
  779. MCI_UNFREEZE                    equ    0845h
  780. MCI_LOAD                        equ    0850h
  781. MCI_CUT                         equ    0851h
  782. MCI_COPY                        equ    0852h
  783. MCI_PASTE                       equ    0853h
  784. MCI_UPDATE                      equ    0854h
  785. MCI_RESUME                      equ    0855h
  786. MCI_DELETE                      equ    0856h
  787.  
  788. ; all custom MCI command messages must be >= than this value
  789. MCI_USER_MESSAGES               equ    (400h + DRV_MCI_FIRST)
  790.  
  791.  
  792. ; device ID for "all devices"
  793. MCI_ALL_DEVICE_ID               equ    0FFFFh
  794.  
  795. ; constants for predefined MCI device types
  796. MCI_DEVTYPE_VCR                 equ    (MCI_STRING_OFFSET + 1)
  797. MCI_DEVTYPE_VIDEODISC           equ    (MCI_STRING_OFFSET + 2)
  798. MCI_DEVTYPE_OVERLAY             equ    (MCI_STRING_OFFSET + 3)
  799. MCI_DEVTYPE_CD_AUDIO            equ    (MCI_STRING_OFFSET + 4)
  800. MCI_DEVTYPE_DAT                 equ    (MCI_STRING_OFFSET + 5)
  801. MCI_DEVTYPE_SCANNER             equ    (MCI_STRING_OFFSET + 6)
  802. MCI_DEVTYPE_ANIMATION           equ    (MCI_STRING_OFFSET + 7)
  803. MCI_DEVTYPE_DIGITAL_VIDEO       equ    (MCI_STRING_OFFSET + 8)
  804. MCI_DEVTYPE_OTHER               equ    (MCI_STRING_OFFSET + 9)
  805. MCI_DEVTYPE_WAVEFORM_AUDIO      equ    (MCI_STRING_OFFSET + 10)
  806. MCI_DEVTYPE_SEQUENCER           equ    (MCI_STRING_OFFSET + 11)
  807.  
  808. MCI_DEVTYPE_FIRST               equ    MCI_DEVTYPE_VCR
  809. MCI_DEVTYPE_LAST                equ    MCI_DEVTYPE_SEQUENCER
  810.  
  811. ; return values for 'status mode' command
  812. MCI_MODE_NOT_READY              equ    (MCI_STRING_OFFSET + 12)
  813. MCI_MODE_STOP                   equ    (MCI_STRING_OFFSET + 13)
  814. MCI_MODE_PLAY                   equ    (MCI_STRING_OFFSET + 14)
  815. MCI_MODE_RECORD                 equ    (MCI_STRING_OFFSET + 15)
  816. MCI_MODE_SEEK                   equ    (MCI_STRING_OFFSET + 16)
  817. MCI_MODE_PAUSE                  equ    (MCI_STRING_OFFSET + 17)
  818. MCI_MODE_OPEN                   equ    (MCI_STRING_OFFSET + 18)
  819.  
  820. ; constants used in 'set time format' and 'status time format' commands
  821. MCI_FORMAT_MILLISECONDS         equ    0
  822. MCI_FORMAT_HMS                  equ    1
  823. MCI_FORMAT_MSF                  equ    2
  824. MCI_FORMAT_FRAMES               equ    3
  825. MCI_FORMAT_SMPTE_24             equ    4
  826. MCI_FORMAT_SMPTE_25             equ    5
  827. MCI_FORMAT_SMPTE_30             equ    6
  828. MCI_FORMAT_SMPTE_30DROP         equ    7
  829. MCI_FORMAT_BYTES                equ    8
  830. MCI_FORMAT_SAMPLES              equ    9
  831. MCI_FORMAT_TMSF                 equ    10
  832.  
  833. ; flags for wParam of MM_MCINOTIFY message
  834. MCI_NOTIFY_SUCCESSFUL           equ    0001h
  835. MCI_NOTIFY_SUPERSEDED           equ    0002h
  836. MCI_NOTIFY_ABORTED              equ    0004h
  837. MCI_NOTIFY_FAILURE              equ    0008h
  838.  
  839.  
  840. ; common flags for dwFlags parameter of MCI command messages
  841. MCI_NOTIFY                      equ    00000001h
  842. MCI_WAIT                        equ    00000002h
  843. MCI_FROM                        equ    00000004h
  844. MCI_TO                          equ    00000008h
  845. MCI_TRACK                       equ    00000010h
  846.  
  847. ; flags for dwFlags parameter of MCI_OPEN command message
  848. MCI_OPEN_SHAREABLE              equ    00000100h
  849. MCI_OPEN_ELEMENT                equ    00000200h
  850. MCI_OPEN_ALIAS                  equ    00000400h
  851. MCI_OPEN_ELEMENT_ID             equ    00000800h
  852. MCI_OPEN_TYPE_ID                equ    00001000h
  853. MCI_OPEN_TYPE                   equ    00002000h
  854.  
  855. ; flags for dwFlags parameter of MCI_SEEK command message
  856. MCI_SEEK_TO_START               equ    00000100h
  857. MCI_SEEK_TO_END                 equ    00000200h
  858.  
  859. ; flags for dwFlags parameter of MCI_STATUS command message
  860. MCI_STATUS_ITEM                 equ    00000100h
  861. MCI_STATUS_START                equ    00000200h
  862.  
  863. ; flags for dwItem field of the MCI_STATUS_PARMS parameter block
  864. MCI_STATUS_LENGTH               equ    00000001h
  865. MCI_STATUS_POSITION             equ    00000002h
  866. MCI_STATUS_NUMBER_OF_TRACKS     equ    00000003h
  867. MCI_STATUS_MODE                 equ    00000004h
  868. MCI_STATUS_MEDIA_PRESENT        equ    00000005h
  869. MCI_STATUS_TIME_FORMAT          equ    00000006h
  870. MCI_STATUS_READY                equ    00000007h
  871. MCI_STATUS_CURRENT_TRACK        equ    00000008h
  872.  
  873. ; flags for dwFlags parameter of MCI_INFO command message
  874. MCI_INFO_PRODUCT                equ    00000100h
  875. MCI_INFO_FILE                   equ    00000200h
  876.  
  877. ; flags for dwFlags parameter of MCI_GETDEVCAPS command message
  878. MCI_GETDEVCAPS_ITEM             equ    00000100h
  879.  
  880. ; flags for dwItem field of the MCI_GETDEVCAPS_PARMS parameter block
  881. MCI_GETDEVCAPS_CAN_RECORD       equ    00000001h
  882. MCI_GETDEVCAPS_HAS_AUDIO        equ    00000002h
  883. MCI_GETDEVCAPS_HAS_VIDEO        equ    00000003h
  884. MCI_GETDEVCAPS_DEVICE_TYPE      equ    00000004h
  885. MCI_GETDEVCAPS_USES_FILES       equ    00000005h
  886. MCI_GETDEVCAPS_COMPOUND_DEVICE  equ    00000006h
  887. MCI_GETDEVCAPS_CAN_EJECT        equ    00000007h
  888. MCI_GETDEVCAPS_CAN_PLAY         equ    00000008h
  889. MCI_GETDEVCAPS_CAN_SAVE         equ    00000009h
  890.  
  891. ; flags for dwFlags parameter of MCI_SYSINFO command message
  892. MCI_SYSINFO_QUANTITY            equ    00000100h
  893. MCI_SYSINFO_OPEN                equ    00000200h
  894. MCI_SYSINFO_NAME                equ    00000400h
  895. MCI_SYSINFO_INSTALLNAME         equ    00000800h
  896.  
  897. ; flags for dwFlags parameter of MCI_SET command message
  898. MCI_SET_DOOR_OPEN               equ    00000100h
  899. MCI_SET_DOOR_CLOSED             equ    00000200h
  900. MCI_SET_TIME_FORMAT             equ    00000400h
  901. MCI_SET_AUDIO                   equ    00000800h
  902. MCI_SET_VIDEO                   equ    00001000h
  903. MCI_SET_ON                      equ    00002000h
  904. MCI_SET_OFF                     equ    00004000h
  905.  
  906. ; flags for dwAudio field of MCI_SET_PARMS or MCI_SEQ_SET_PARMS
  907. MCI_SET_AUDIO_ALL               equ    00000000h
  908. MCI_SET_AUDIO_LEFT              equ    00000001h
  909. MCI_SET_AUDIO_RIGHT             equ    00000002h
  910.  
  911. ; flags for dwFlags parameter of MCI_BREAK command message
  912. MCI_BREAK_KEY                   equ    00000100h
  913. MCI_BREAK_HWND                  equ    00000200h
  914. MCI_BREAK_OFF                   equ    00000400h
  915.  
  916. ; flags for dwFlags parameter of MCI_RECORD command message
  917. MCI_RECORD_INSERT               equ    00000100h
  918. MCI_RECORD_OVERWRITE            equ    00000200h
  919.  
  920. ; flags for dwFlags parameter of MCI_SOUND command message
  921. MCI_SOUND_NAME                  equ    00000100h
  922.  
  923. ; flags for dwFlags parameter of MCI_SAVE command message
  924. MCI_SAVE_FILE                   equ    00000100h
  925.  
  926. ; flags for dwFlags parameter of MCI_LOAD command message
  927. MCI_LOAD_FILE                   equ    00000100h
  928.  
  929. ; generic parameter block for MCI command messages with no special parameters
  930. MCI_GENERIC_PARMS struc
  931.     mcigen_dwCallback         dd    ?
  932. MCI_GENERIC_PARMS ends
  933.  
  934. ; parameter block for MCI_OPEN command message
  935. MCI_OPEN_PARMS struc
  936.     mciopen_dwCallback        dd    ?
  937.     mciopen_wDeviceID         dw    ?
  938.     mciopen_wReserved0        dw    ?
  939.     mciopen_lpstrDeviceType   dd    ?
  940.     mciopen_lpstrElementName  dd    ?
  941.     mciopen_lpstrAlias        dd    ?
  942. MCI_OPEN_PARMS ends
  943.  
  944. ; parameter block for MCI_PLAY command message
  945. MCI_PLAY_PARMS struc
  946.     mciplay_dwCallback        dd    ?
  947.     mciplay_dwFrom            dd    ?
  948.     mciplay_dwTo              dd    ?
  949. MCI_PLAY_PARMS ends
  950.  
  951. ; parameter block for MCI_SEEK command message
  952. MCI_SEEK_PARMS struc
  953.     mciseek_dwCallback        dd    ?
  954.     mciseek_dwTo              dd    ?
  955. MCI_SEEK_PARMS ends
  956.  
  957. ; parameter block for MCI_STATUS command message
  958. MCI_STATUS_PARMS struc
  959.     mcistat_dwCallback        dd    ?
  960.     mcistat_dwReturn          dd    ?
  961.     mcistat_dwItem            dd    ?
  962.     mcistat_dwTrack           dd    ?
  963. MCI_STATUS_PARMS ends
  964.  
  965. ; parameter block for MCI_INFO command message
  966. MCI_INFO_PARMS struc
  967.     mciinfo_dwCallback        dd    ?
  968.     mciinfo_lpstrReturn       dd    ?
  969.     mciinfo_dwRetSize         dd    ?
  970. MCI_INFO_PARMS ends
  971.  
  972. ; parameter block for MCI_GETDEVCAPS command message
  973. MCI_GETDEVCAPS_PARMS struc
  974.     mcigdc_dwCallback         dd    ?
  975.     mcigdc_dwReturn           dd    ?
  976.     mcigdc_dwItem             dd    ?
  977. MCI_GETDEVCAPS_PARMS ends
  978.  
  979. ; parameter block for MCI_SYSINFO command message
  980. MCI_SYSINFO_PARMS struc
  981.     mcisi_dwCallback          dd    ?
  982.     mcisi_lpstrReturn         dd    ?
  983.     mcisi_dwRetSize           dd    ?
  984.     mcisi_dwNumber            dd    ?
  985.     mcisi_wDeviceType         dw    ?
  986.     mcisi_wReserved0          dw    ?
  987. MCI_SYSINFO_PARMS ends
  988.  
  989. ; parameter block for MCI_SET command message
  990. MCI_SET_PARMS struc
  991.     mciset_dwCallback         dd    ?
  992.     mciset_dwTimeFormat       dd    ?
  993.     mciset_dwAudio            dd    ?
  994. MCI_SET_PARMS ends
  995.  
  996. ; parameter block for MCI_BREAK command message
  997. MCI_BREAK_PARMS struc
  998.     mcibreak_dwCallback       dd    ?
  999.     mcibreak_nVirtKey         dw    ?
  1000.     mcibreak_wReserved0       dw    ?
  1001.     mcibreak_hwndBreak        dw    ?
  1002.     mcibreak_wReserved1       dw    ?
  1003. MCI_BREAK_PARMS ends
  1004.  
  1005. ; parameter block for MCI_SOUND command message
  1006. MCI_SOUND_PARMS struc
  1007.     mcisnd_dwCallback         dd    ?
  1008.     mcisnd_lpstrSoundName     dd    ?
  1009. MCI_SOUND_PARMS ends
  1010.  
  1011. ; parameter block for MCI_SAVE command message
  1012. MCI_SAVE_PARMS struc
  1013.     mcisave_dwCallback        dd    ?
  1014.     mcisave_lpfilename        dd    ?
  1015. MCI_SAVE_PARMS ends
  1016.  
  1017. ; parameter block for MCI_LOAD command message
  1018. MCI_LOAD_PARMS struc
  1019.     mciload_dwCallback        dd    ?
  1020.     mciload_lpfilename        dd    ?
  1021. MCI_LOAD_PARMS ends
  1022.  
  1023. ; parameter block for MCI_RECORD command message
  1024. MCI_RECORD_PARMS struc
  1025.     mcirec_dwCallback         dd    ?
  1026.     mcirec_dwFrom             dd    ?
  1027.     mcirec_dwTo               dd    ?
  1028. MCI_RECORD_PARMS ends
  1029.  
  1030.  
  1031. ;
  1032. ; MCI extensions for videodisc devices
  1033. ;
  1034.  
  1035. ; flag for dwReturn field of MCI_STATUS_PARMS
  1036. ; MCI_STATUS command, (dwItem == MCI_STATUS_MODE)
  1037. MCI_VD_MODE_PARK                equ    (MCI_VD_OFFSET + 1)
  1038.  
  1039. ; flag for dwReturn field of MCI_STATUS_PARMS
  1040. ; MCI_STATUS command, (dwItem == MCI_VD_STATUS_MEDIA_TYPE)
  1041. MCI_VD_MEDIA_CLV                equ    (MCI_VD_OFFSET + 2)
  1042. MCI_VD_MEDIA_CAV                equ    (MCI_VD_OFFSET + 3)
  1043. MCI_VD_MEDIA_OTHER              equ    (MCI_VD_OFFSET + 4)
  1044.  
  1045. MCI_VD_FORMAT_TRACK             equ    4001h
  1046.  
  1047. ; flags for dwFlags parameter of MCI_PLAY command message
  1048. MCI_VD_PLAY_REVERSE             equ    00010000h
  1049. MCI_VD_PLAY_FAST                equ    00020000h
  1050. MCI_VD_PLAY_SPEED               equ    00040000h
  1051. MCI_VD_PLAY_SCAN                equ    00080000h
  1052. MCI_VD_PLAY_SLOW                equ    00100000h
  1053.  
  1054. ; flag for dwFlags parameter of MCI_SEEK command message
  1055. MCI_VD_SEEK_REVERSE             equ    00010000h
  1056.  
  1057. ; flags for dwItem field of MCI_STATUS_PARMS parameter block
  1058. MCI_VD_STATUS_SPEED             equ    00004002h
  1059. MCI_VD_STATUS_FORWARD           equ    00004003h
  1060. MCI_VD_STATUS_MEDIA_TYPE        equ    00004004h
  1061. MCI_VD_STATUS_SIDE              equ    00004005h
  1062. MCI_VD_STATUS_DISC_SIZE         equ    00004006h
  1063.  
  1064. ; flags for dwFlags parameter of MCI_GETDEVCAPS command message
  1065. MCI_VD_GETDEVCAPS_CLV           equ    00010000h
  1066. MCI_VD_GETDEVCAPS_CAV           equ    00020000h
  1067.  
  1068. MCI_VD_SPIN_UP                  equ    0001h
  1069. MCI_VD_SPIN_DOWN                equ    0002h
  1070.  
  1071. ; flags for dwItem field of MCI_GETDEVCAPS_PARMS parameter block
  1072. MCI_VD_GETDEVCAPS_CAN_REVERSE   equ    00004002h
  1073. MCI_VD_GETDEVCAPS_FAST_RATE     equ    00004003h
  1074. MCI_VD_GETDEVCAPS_SLOW_RATE     equ    00004004h
  1075. MCI_VD_GETDEVCAPS_NORMAL_RATE   equ    00004005h
  1076.  
  1077. ; flags for the dwFlags parameter of MCI_STEP command message
  1078. MCI_VD_STEP_FRAMES              equ    00010000h
  1079. MCI_VD_STEP_REVERSE             equ    00020000h
  1080.  
  1081. ; flag for the MCI_ESCAPE command message
  1082. MCI_VD_ESCAPE_STRING            equ    00000100h
  1083.  
  1084. ; parameter block for MCI_PLAY command message
  1085. MCI_VD_PLAY_PARMS struc
  1086.     mcivdplay_dwCallback      dd    ?
  1087.     mcivdplay_dwFrom          dd    ?
  1088.     mcivdplay_dwTo            dd    ?
  1089.     mcivdplay_dwSpeed         dd    ?
  1090. MCI_VD_PLAY_PARMS ends
  1091.  
  1092. ; parameter block for MCI_STEP command message
  1093. MCI_VD_STEP_PARMS struc
  1094.     mcivdstep_dwCallback      dd    ?
  1095.     mcivdstep_dwFrames        dd    ?
  1096. MCI_VD_STEP_PARMS ends
  1097.  
  1098. ; parameter block for MCI_ESCAPE command message
  1099. MCI_VD_ESCAPE_PARMS struc
  1100.     mcivcesc_dwCallback       dd    ?
  1101.     mcivcesc_lpstrCommand     dd    ?
  1102. MCI_VD_ESCAPE_PARMS ends
  1103.  
  1104.  
  1105. ;
  1106. ; MCI extensions for waveform audio devices
  1107. ;
  1108.  
  1109. ; flags for the dwFlags parameter of MCI_OPEN command message
  1110. MCI_WAVE_OPEN_BUFFER            equ    00010000h
  1111.  
  1112. ; flags for the dwFlags parameter of MCI_SET command message
  1113. MCI_WAVE_SET_FORMATTAG          equ    00010000h
  1114. MCI_WAVE_SET_CHANNELS           equ    00020000h
  1115. MCI_WAVE_SET_SAMPLESPERSEC      equ    00040000h
  1116. MCI_WAVE_SET_AVGBYTESPERSEC     equ    00080000h
  1117. MCI_WAVE_SET_BLOCKALIGN         equ    00100000h
  1118. MCI_WAVE_SET_BITSPERSAMPLE      equ    00200000h
  1119.  
  1120. ; flags for the dwFlags parameter of MCI_STATUS, MCI_SET command messages
  1121. MCI_WAVE_INPUT                  equ    00400000h
  1122. MCI_WAVE_OUTPUT                 equ    00800000h
  1123.  
  1124. ; flags for the dwItem field of MCI_STATUS_PARMS parameter block
  1125. MCI_WAVE_STATUS_FORMATTAG       equ    00004001h
  1126. MCI_WAVE_STATUS_CHANNELS        equ    00004002h
  1127. MCI_WAVE_STATUS_SAMPLESPERSEC   equ    00004003h
  1128. MCI_WAVE_STATUS_AVGBYTESPERSEC  equ    00004004h
  1129. MCI_WAVE_STATUS_BLOCKALIGN      equ    00004005h
  1130. MCI_WAVE_STATUS_BITSPERSAMPLE   equ    00004006h
  1131. MCI_WAVE_STATUS_LEVEL           equ    00004007h
  1132.  
  1133. ; flags for the dwFlags parameter of MCI_SET command message
  1134. MCI_WAVE_SET_ANYINPUT           equ    04000000h
  1135. MCI_WAVE_SET_ANYOUTPUT          equ    08000000h
  1136.  
  1137. ; flags for the dwFlags parameter of MCI_GETDEVCAPS command message
  1138. MCI_WAVE_GETDEVCAPS_INPUTS      equ    00004001h
  1139. MCI_WAVE_GETDEVCAPS_OUTPUTS     equ    00004002h
  1140.  
  1141. ; parameter block for MCI_OPEN command message
  1142. MCI_WAVE_OPEN_PARMS struc
  1143.     mciwopen_dwCallback       dd    ?
  1144.     mciwopen_wDeviceID        dw    ?
  1145.     mciwopen_wReserved0       dw    ?
  1146.     mciwopen_lpstrDeviceType  dd    ?
  1147.     mciwopen_lpstrElementName dd    ?
  1148.     mciwopen_lpstrAlias       dd    ?
  1149.     mciwopen_dwBufferSeconds  dd    ?
  1150. MCI_WAVE_OPEN_PARMS ends
  1151.  
  1152. ; parameter block for MCI_DELETE command message
  1153. MCI_WAVE_DELETE_PARMS struc
  1154.     mciwdel_dwCallback        dd    ?
  1155.     mciwdel_dwFrom            dd    ?
  1156.     mciwdel_dwTo              dd    ?
  1157. MCI_WAVE_DELETE_PARMS ends
  1158.  
  1159. ; parameter block for MCI_SET command message
  1160. MCI_WAVE_SET_PARMS struc
  1161.     mciwset_dwCallback        dd    ?
  1162.     mciwset_dwTimeFormat      dd    ?
  1163.     mciwset_dwAudio           dd    ?
  1164.     mciwset_wInput            dw    ?
  1165.     mciwset_wReserved0        dw    ?
  1166.     mciwset_wOutput           dw    ?
  1167.     mciwset_wReserved1        dw    ?
  1168.     mciwset_wFormatTag        dw    ?
  1169.     mciwset_wReserved2        dw    ?
  1170.     mciwset_nChannels         dw    ?
  1171.     mciwset_wReserved3        dw    ?
  1172.     mciwset_nSamplesPerSec    dw    ?
  1173.     mciwset_nAvgBytesPerSec   dw    ?
  1174.     mciwset_nBlockAlign       dw    ?
  1175.     mciwset_wReserved4        dw    ?
  1176.     mciwset_wBitsPerSample    dw    ?
  1177.     mciwset_wReserved5        dw    ?
  1178. MCI_WAVE_SET_PARMS ends
  1179.  
  1180.  
  1181. ;
  1182. ; MCI extensions for MIDI sequencer devices
  1183. ;
  1184.  
  1185. ; flags for the dwReturn field of MCI_STATUS_PARMS parameter block
  1186. ; MCI_STATUS command, (dwItem == MCI_SEQ_STATUS_DIVTYPE)
  1187. MCI_SEQ_DIV_PPQN            equ    (0 + MCI_SEQ_OFFSET)
  1188. MCI_SEQ_DIV_SMPTE_24        equ    (1 + MCI_SEQ_OFFSET)
  1189. MCI_SEQ_DIV_SMPTE_25        equ    (2 + MCI_SEQ_OFFSET)
  1190. MCI_SEQ_DIV_SMPTE_30DROP    equ    (3 + MCI_SEQ_OFFSET)
  1191. MCI_SEQ_DIV_SMPTE_30        equ    (4 + MCI_SEQ_OFFSET)
  1192.  
  1193. ; flags for the dwMaster field of MCI_SEQ_SET_PARMS parameter block
  1194. ; MCI_SET command, (dwFlags == MCI_SEQ_SET_MASTER)
  1195. MCI_SEQ_FORMAT_SONGPTR      equ    4001h
  1196. MCI_SEQ_FILE                equ    4002h
  1197. MCI_SEQ_MIDI                equ    4003h
  1198. MCI_SEQ_SMPTE               equ    4004h
  1199. MCI_SEQ_NONE                equ    65533
  1200.  
  1201. ; flags for the dwItem field of MCI_STATUS_PARMS parameter block
  1202. MCI_SEQ_STATUS_TEMPO            equ    00004002h
  1203. MCI_SEQ_STATUS_PORT             equ    00004003h
  1204. MCI_SEQ_STATUS_SLAVE            equ    00004007h
  1205. MCI_SEQ_STATUS_MASTER           equ    00004008h
  1206. MCI_SEQ_STATUS_OFFSET           equ    00004009h
  1207. MCI_SEQ_STATUS_DIVTYPE          equ    0000400Ah
  1208.  
  1209. ; flags for the dwFlags parameter of MCI_SET command message
  1210. MCI_SEQ_SET_TEMPO               equ    00010000h
  1211. MCI_SEQ_SET_PORT                equ    00020000h
  1212. MCI_SEQ_SET_SLAVE               equ    00040000h
  1213. MCI_SEQ_SET_MASTER              equ    00080000h
  1214. MCI_SEQ_SET_OFFSET              equ    01000000h
  1215.  
  1216. ; parameter block for MCI_SET command message
  1217. MCI_SEQ_SET_PARMS struc
  1218.     mcisset_dwCallback        dd    ?
  1219.     mcisset_dwTimeFormat      dd    ?
  1220.     mcisset_dwAudio           dd    ?
  1221.     mcisset_dwTempo           dd    ?
  1222.     mcisset_dwPort            dd    ?
  1223.     mcisset_dwSlave           dd    ?
  1224.     mcisset_dwMaster          dd    ?
  1225.     mcisset_dwOffset          dd    ?
  1226. MCI_SEQ_SET_PARMS ends
  1227.  
  1228.  
  1229. ;
  1230. ; MCI extensions for animation devices
  1231. ;
  1232.  
  1233. ; flags for dwFlags parameter of MCI_OPEN command message
  1234. MCI_ANIM_OPEN_WS                equ    00010000h
  1235. MCI_ANIM_OPEN_PARENT            equ    00020000h
  1236. MCI_ANIM_OPEN_NOSTATIC          equ    00040000h
  1237.  
  1238. ; flags for dwFlags parameter of MCI_PLAY command message
  1239. MCI_ANIM_PLAY_SPEED             equ    00010000h
  1240. MCI_ANIM_PLAY_REVERSE           equ    00020000h
  1241. MCI_ANIM_PLAY_FAST              equ    00040000h
  1242. MCI_ANIM_PLAY_SLOW              equ    00080000h
  1243. MCI_ANIM_PLAY_SCAN              equ    00100000h
  1244.  
  1245. ; flags for dwFlags parameter of MCI_STEP command message
  1246. MCI_ANIM_STEP_REVERSE           equ    00010000h
  1247. MCI_ANIM_STEP_FRAMES            equ    00020000h
  1248.  
  1249. ; flags for dwItem field of MCI_STATUS_PARMS parameter block
  1250. MCI_ANIM_STATUS_SPEED           equ    00004001h
  1251. MCI_ANIM_STATUS_FORWARD         equ    00004002h
  1252. MCI_ANIM_STATUS_HWND            equ    00004003h
  1253. MCI_ANIM_STATUS_HPAL            equ    00004004h
  1254. MCI_ANIM_STATUS_STRETCH         equ    00004005h
  1255.  
  1256. ; flags for the dwFlags parameter of MCI_INFO command message
  1257. MCI_ANIM_INFO_TEXT              equ    00010000h
  1258.  
  1259. ; flags for dwItem field of MCI_GETDEVCAPS_PARMS parameter block
  1260. MCI_ANIM_GETDEVCAPS_CAN_REVERSE equ    00004001h
  1261. MCI_ANIM_GETDEVCAPS_FAST_RATE   equ    00004002h
  1262. MCI_ANIM_GETDEVCAPS_SLOW_RATE   equ    00004003h
  1263. MCI_ANIM_GETDEVCAPS_NORMAL_RATE equ    00004004h
  1264. MCI_ANIM_GETDEVCAPS_PALETTES    equ    00004006h
  1265. MCI_ANIM_GETDEVCAPS_CAN_STRETCH equ    00004007h
  1266. MCI_ANIM_GETDEVCAPS_MAX_WINDOWS equ    00004008h
  1267.  
  1268. ; flags for the MCI_REALIZE command message
  1269. MCI_ANIM_REALIZE_NORM           equ    00010000h
  1270. MCI_ANIM_REALIZE_BKGD           equ    00020000h
  1271.  
  1272. ; flags for dwFlags parameter of MCI_WINDOW command message
  1273. MCI_ANIM_WINDOW_HWND            equ    00010000h
  1274. MCI_ANIM_WINDOW_STATE           equ    00040000h
  1275. MCI_ANIM_WINDOW_TEXT            equ    00080000h
  1276. MCI_ANIM_WINDOW_ENABLE_STRETCH  equ    00100000h
  1277. MCI_ANIM_WINDOW_DISABLE_STRETCH equ    00200000h
  1278.  
  1279. ; flags for hWnd field of MCI_ANIM_WINDOW_PARMS parameter block
  1280. ; MCI_WINDOW command message, (dwFlags == MCI_ANIM_WINDOW_HWND)
  1281. MCI_ANIM_WINDOW_DEFAULT         equ    00000000h
  1282.  
  1283. ; flags for dwFlags parameter of MCI_PUT command message
  1284. MCI_ANIM_RECT                   equ    00010000h
  1285. MCI_ANIM_PUT_SOURCE             equ    00020000h
  1286. MCI_ANIM_PUT_DESTINATION        equ    00040000h
  1287.  
  1288. ; flags for dwFlags parameter of MCI_WHERE command message
  1289. MCI_ANIM_WHERE_SOURCE           equ    00020000h
  1290. MCI_ANIM_WHERE_DESTINATION      equ    00040000h
  1291.  
  1292. ; flags for dwFlags parameter of MCI_UPDATE command message
  1293. MCI_ANIM_UPDATE_HDC             equ    00020000h
  1294.  
  1295. ; parameter block for MCI_OPEN command message
  1296. MCI_ANIM_OPEN_PARMS struc
  1297.     mciaopen_dwCallback       dd    ?
  1298.     mciaopen_wDeviceID        dw    ?
  1299.     mciaopen_wReserved0       dw    ?
  1300.     mciaopen_lpstrDeviceType  dd    ?
  1301.     mciaopen_lpstrElementName dd    ?
  1302.     mciaopen_lpstrAlias       dd    ?
  1303.     mciaopen_dwStyle          dd    ?
  1304.     mciaopen_hWndParent       dw    ?
  1305.     mciaopen_wReserved1       dw    ?
  1306. MCI_ANIM_OPEN_PARMS ends
  1307.  
  1308. ; parameter block for MCI_PLAY command message
  1309. MCI_ANIM_PLAY_PARMS struc
  1310.     mciaplay_dwCallback       dd    ?
  1311.     mciaplay_dwFrom           dd    ?
  1312.     mciaplay_dwTo             dd    ?
  1313.     mciaplay_dwSpeed          dd    ?
  1314. MCI_ANIM_PLAY_PARMS ends
  1315.  
  1316. ; parameter block for MCI_STEP command message
  1317. MCI_ANIM_STEP_PARMS struc
  1318.     mciastep_dwCallback       dd    ?
  1319.     mciastep_dwFrames         dd    ?
  1320. MCI_ANIM_STEP_PARMS ends
  1321.  
  1322. ; parameter block for MCI_WINDOW command message
  1323. MCI_ANIM_WINDOW_PARMS struc
  1324.     mciawin_dwCallback        dd    ?
  1325.     mciawin_hWnd              dw    ?
  1326.     mciawin_wReserved1        dw    ?
  1327.     mciawin_nCmdShow          dw    ?
  1328.     mciawin_wReserved2        dw    ?
  1329.     mciawin_lpstrText         dd    ?
  1330. MCI_ANIM_WINDOW_PARMS ends
  1331.  
  1332. ; parameter block for MCI_PUT, MCI_UPDATE, MCI_WHERE command messages
  1333. MCI_ANIM_RECT_PARMS struc
  1334.     mciarect_dwCallback       dd    ?
  1335. ifdef MCI_USE_OFFEXT
  1336.     mciarect_ptOffset         db (SIZE POINT) dup (?)
  1337.     mciarect_ptExtent         db (SIZE POINT) dup (?)
  1338. else    ;ifdef MCI_USE_OFFEXT
  1339.     mciarect_rc               db (SIZE RECT) dup (?)
  1340. endif  ;ifdef MCI_USE_OFFEXT
  1341. MCI_ANIM_RECT_PARMS ends
  1342.  
  1343. ; parameter block for MCI_UPDATE PARMS
  1344. MCI_ANIM_UPDATE_PARMS struc
  1345.     mciaupd_dwCallback        dd    ?
  1346.     mciaupd_rc                db (SIZE RECT) dup (?)
  1347.     mciaupd_hDC               dw    ?
  1348. MCI_ANIM_UPDATE_PARMS ends
  1349.  
  1350.  
  1351. ;
  1352. ; MCI extensions for video overlay devices
  1353. ;
  1354.  
  1355. ; flags for dwFlags parameter of MCI_OPEN command message
  1356. MCI_OVLY_OPEN_WS                equ    00010000h
  1357. MCI_OVLY_OPEN_PARENT            equ    00020000h
  1358.  
  1359. ; flags for dwFlags parameter of MCI_STATUS command message
  1360. MCI_OVLY_STATUS_HWND            equ    00004001h
  1361. MCI_OVLY_STATUS_STRETCH         equ    00004002h
  1362.  
  1363. ; flags for dwFlags parameter of MCI_INFO command message
  1364. MCI_OVLY_INFO_TEXT              equ    00010000h
  1365.  
  1366. ; flags for dwItem field of MCI_GETDEVCAPS_PARMS parameter block
  1367. MCI_OVLY_GETDEVCAPS_CAN_STRETCH equ    00004001h
  1368. MCI_OVLY_GETDEVCAPS_CAN_FREEZE  equ    00004002h
  1369. MCI_OVLY_GETDEVCAPS_MAX_WINDOWS equ    00004003h
  1370.  
  1371. ; flags for dwFlags parameter of MCI_WINDOW command message
  1372. MCI_OVLY_WINDOW_HWND            equ    00010000h
  1373. MCI_OVLY_WINDOW_STATE           equ    00040000h
  1374. MCI_OVLY_WINDOW_TEXT            equ    00080000h
  1375. MCI_OVLY_WINDOW_ENABLE_STRETCH  equ    00100000h
  1376. MCI_OVLY_WINDOW_DISABLE_STRETCH equ    00200000h
  1377.  
  1378. ; flags for hWnd parameter of MCI_OVLY_WINDOW_PARMS parameter block
  1379. MCI_OVLY_WINDOW_DEFAULT         equ    00000000h
  1380.  
  1381. ; flags for dwFlags parameter of MCI_PUT command message
  1382. MCI_OVLY_RECT                   equ    00010000h
  1383. MCI_OVLY_PUT_SOURCE             equ    00020000h
  1384. MCI_OVLY_PUT_DESTINATION        equ    00040000h
  1385. MCI_OVLY_PUT_FRAME              equ    00080000h
  1386. MCI_OVLY_PUT_VIDEO              equ    00100000h
  1387.  
  1388. ; flags for dwFlags parameter of MCI_WHERE command message
  1389. MCI_OVLY_WHERE_SOURCE           equ    00020000h
  1390. MCI_OVLY_WHERE_DESTINATION      equ    00040000h
  1391. MCI_OVLY_WHERE_FRAME            equ    00080000h
  1392. MCI_OVLY_WHERE_VIDEO            equ    00100000h
  1393.  
  1394. ; parameter block for MCI_OPEN command message
  1395. MCI_OVLY_OPEN_PARMS struc
  1396.     mcioopen_dwCallback       dd    ?
  1397.     mcioopen_wDeviceID        dw    ?
  1398.     mcioopen_wReserved0       dw    ?
  1399.     mcioopen_lpstrDeviceType  dd    ?
  1400.     mcioopen_lpstrElementName dd    ?
  1401.     mcioopen_lpstrAlias       dd    ?
  1402.     mcioopen_dwStyle          dd    ?
  1403.     mcioopen_hWndParent       dw    ?
  1404.     mcioopen_wReserved1       dw    ?
  1405. MCI_OVLY_OPEN_PARMS ends
  1406.  
  1407. ; parameter block for MCI_WINDOW command message
  1408. MCI_OVLY_WINDOW_PARMS struc
  1409.     mciowin_dwCallback        dd    ?
  1410.     mciowin_hWnd              dw    ?
  1411.     mciowin_wReserved1        dw    ?
  1412.     mciowin_nCmdShow          dw    ?
  1413.     mciowin_wReserved2        dw    ?
  1414.     mciowin_lpstrText         dd    ?
  1415. MCI_OVLY_WINDOW_PARMS ends
  1416.  
  1417. ; parameter block for MCI_PUT, MCI_UPDATE, and MCI_WHERE command messages
  1418. MCI_OVLY_RECT_PARMS struc
  1419.     mciorect_dwCallback       dd    ?
  1420. ifdef MCI_USE_OFFEXT
  1421.     mciorect_ptOffset         db (SIZE POINT) dup (?)
  1422.     mciorect_ptExtent         db (SIZE POINT) dup (?)
  1423. else    ;ifdef MCI_USE_OFFEXT
  1424.     mciorect_rc               db (SIZE RECT) dup (?)
  1425. endif  ;ifdef MCI_USE_OFFEXT
  1426. MCI_OVLY_RECT_PARMS ends
  1427.  
  1428. ; parameter block for MCI_SAVE command message
  1429. MCI_OVLY_SAVE_PARMS struc
  1430.     mciosave_dwCallback       dd    ?
  1431.     mciosave_lpfilename       dd    ?
  1432.     mciosave_rc               db (SIZE RECT) dup (?)
  1433. MCI_OVLY_SAVE_PARMS ends
  1434.  
  1435. ; parameter block for MCI_LOAD command message
  1436. MCI_OVLY_LOAD_PARMS struc
  1437.     mcioload_dwCallback       dd    ?
  1438.     mcioload_lpfilename       dd    ?
  1439.     mcioload_rc               db (SIZE RECT) dup (?)
  1440. MCI_OVLY_LOAD_PARMS ends
  1441.  
  1442. endif  ;ifndef MMNOMCI
  1443.  
  1444. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1445. ;
  1446. ;                       DISPLAY Driver extensions
  1447. ;
  1448. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1449.  
  1450. ifndef C1_TRANSPARENT
  1451.     CAPS1           equ    94          ; other caps
  1452.     C1_TRANSPARENT  equ    0001h       ; new raster cap
  1453.     NEWTRANSPARENT  equ    3           ; use with SetBkMode()
  1454.  
  1455.     QUERYROPSUPPORT equ    40          ; use to determine ROP support
  1456. endif  ;ifndef C1_TRANSPARENT
  1457.  
  1458. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1459. ;
  1460. ;                       DIB Driver extensions
  1461. ;
  1462. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1463.  
  1464. SELECTDIB       equ    41                      ; DIB.DRV select dib escape
  1465. DIBINDEX MACRO a
  1466.         mov     ax,a
  1467.         mov     dx,10ffh
  1468.         ENDM
  1469.  
  1470.  
  1471. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1472. ;
  1473. ;                       ScreenSaver support
  1474. ;
  1475. ;   The current application will receive a syscommand of SC_SCREENSAVE just
  1476. ;   before the screen saver is invoked.  If the app wishes to prevent a
  1477. ;   screen save, return non-zero value, otherwise call DefWindowProc().
  1478. ;
  1479. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1480.  
  1481. ifndef SC_SCREENSAVE
  1482.  
  1483.     SC_SCREENSAVE   equ    0F140h
  1484.  
  1485. endif  ;ifndef SC_SCREENSAVE
  1486.