home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 April / Chip_1997-04_cd.bin / prezent / cb / data.z / MMSYSTEM.INC < prev    next >
Text File  |  1997-01-16  |  60KB  |  1,483 lines

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