Int 10 Fn 4F13 - Vesa Vbe/ai (audio Interface) - Query Device [s]
AX = 4F13h
BX = 0002h
CX = handle
DX = query
0001h return length of GeneralDeviceClass
0002h return copy of GeneralDeviceClass (see #0089)
0003h return length of Volume Info Structure
0004h return copy of Volume Info Structure (see #0099)
0005h return length of Volume Services Structure
0006h return copy of Volume Services Structure (see #0101)
0007h-000Fh reserved
0010h-FFFFh device-specific
SI:DI -> buffer (functions 0002h,0004h,0006h)
Return: AL = 4Fh if function supported
AH = status
00h successful
SI:DI = length (functions 1,3,5)
SI:DI buffer filled (functions 2,4,6)
01h failed
Note: functions 0003h to 0006h are only supported for the Volume device
Format of GeneralDeviceClass structure:
Offset Size Description (Table 0089)
00h 4 BYTEs name of the structure ("GENI")
04h DWORD structure length
08h WORD type of device (1=Wave, 2=MIDI)
0Ah WORD version of VESA driver support (0100h for 1.00)
10h var for CX=handle for Wave device:
Wave Info structure (see #0090)
some bytes ???
for CX=handle for MIDI device:
MIDI Info Structure (see #0095)
first 8 bytes of MIDI Service Structure ???
See Also: #0099,#0101
Format of WAVE Info Structure:
Offset Size Description (Table 0090)
00h 4 BYTEs name of the structure ("WAVI")
04h DWORD structure length [0000007Eh]
08h DWORD driver software version [00000003h]
0Ch 32 BYTEs vendor name, etc. (ASCIZ string)
2Ch 32 BYTEs vendor product name
4Ch 32 BYTEs vendor chip/hardware description
6Ch BYTE installed board number
6Dh 3 BYTEs unused data
70h DWORD feature bits (see #0091)
74h WORD user determined preference field
76h WORD memory required for driver use [0200h]
78h WORD number of timer tick callbacks per second [0000h]
7Ah WORD channels: 1 = mono, 2 = stereo
stereo is assumed to be interleaved data
7Ch WORD bitfield of max sample sizes (see #0092)
See Also: #0095
Bitfields for Wave feature bits:
Bit(s) Description (Table 0091)
0 8000hz Mono Playback
1 8000hz Mono Record
2 8000hz Stereo Record
3 8000hz Stereo Playback
4 8000hz Full Duplex Play/Record
5 11025hz Mono Playback
6 11025hz Mono Record
7 11025hz Stereo Record
8 11025hz Stereo Playback
9 11025hz Full Duplex Play/Record
10 22050hz Mono Playback
11 22050hz Mono Record
12 22050hz Stereo Record
13 22050hz Stereo Playback
14 22050hz Full Duplex Play/Record
15 44100hz Mono Playback
16 44100hz Mono Record
17 44100hz Stereo Record
18 44100hz Stereo Playback
19 44100hz Full Duplex Play/Record
20-26 reserved (0)
27 driver must pre-handle the data
28 Variable Sample mono playback
29 Variable Sample stereo playback
30 Variable Sample mono record
31 Variable Sample stereo record
(Table 0092)
Values for Sample data size:
01h 8bit play
02h 16bit play
10h 8bit record
20h 16bit record
Format of WAVE Audio Services structure:
Offset Size Description (Table 0093)
00h 4 BYTEs name of the structure
04h DWORD structure length
08h 16 BYTEs for future expansion
---entry points (details???)---
18h DWORD DeviceCheck
11h compression (see also #0094)
12h driver state
13h get current pos
14h sample rate
15h set preference
16h get DMA,IRQ
17h get IO address
18h get mem address
19h get mem free
1Ah full duplex
1Bh get block size
1Ch get PCM format
1Dh enable PCM format
80h-.. vendors can add DevChks above 0x80
1Ch DWORD PCMInfo
20h DWORD PlayBlock
24h DWORD PlayCont
28h DWORD RecordBlock
2Ch DWORD RecordCont
30h DWORD PauseIO
34h DWORD ResumeIO
38h DWORD StopIO
3Ch DWORD WavePrepare
40h DWORD WaveRegister
44h DWORD GetLastError
01h unsupported feature/function
02h bad sample rate
03h bad block length
04h bad block address
05h app. missed an IRQ
06h don't understand the PCM size/format
80h-.. vendors specific errors
48h DWORD TimerTick
4Ch DWORD ApplPSyncCB: CallBack: play filled in by the app
50h DWORD ApplRSyncCB: CallBack: rec filled in by the app
See Also: #0097,#0101
(Table 0094)
Values for type of compression:
01h IMA play
02h ALAW play
03h ULAW play
11h IMA record
12h ALAW record
13h ULAW record
Format of MIDI Info Structure:
Offset Size Description (Table 0095)
00h 4 BYTEs name of the structure ("MIDI")
04h DWORD structure length
08h DWORD driver software version [00000003h]
0Ch 32 BYTEs vendor name, etc. (ASCIZ string)
2Ch 32 BYTEs vendor product name
4Ch 32 BYTEs vendor chip/hardware description
6Ch BYTE installed board number
6Dh 3 BYTEs unused data
70h 14 BYTEs the patch library file name [OPL2.BNK 00..]
7Eh DWORD feature bits (see #0096)
80h WORD user determined preference field
82h WORD memory required for driver use
84h WORD # of timer tick callbacks per second
86h WORD max # of tones (voices, partials)
See Also: #0089,#0097,#0099
Bitfields for MIDI feature bits:
Bit(s) Description (Table 0096)
0-3 reserved for GM extensions
4 Transmitter/Receiver only
5 Patches preloaded
6 MIDI receive has time stamp
8 MIDI interrupt driven input supported
9 MIDI polled input supported
10 MIDI remote patches supported
Format of MIDI Service structure:
Offset Size Description (Table 0097)
00h 4 BYTEs name of the structure ("MIDS")
04h DWORD structure length
08h 16 WORDs patches loaded table bit field
28h 16 BYTEs for future expansion
---entry points (details???)---
38h DWORD device check
11h return available tones
12h return TRUE/FALSE if patch is understood
13h set preference
14h allow/disallow voice stealing
15h get FIFO sizes
16h get DMA,IRQ
17h get IO address
18h get mem address
19h get mem free
80h-.. vendors can add DevChks above 0x80
3Ch DWORD global reset
40h DWORD MIDI msg
44h DWORD poll MIDI
48h DWORD preload patch
4Ch DWORD unload patch
50h DWORD timer tick
54h DWORD get last error
01h unsupported feature/function
02h unknown patch type (see #0098)
03h all tones are used
04h messages are out of sync
05h an incoming patch was incomplete
06h an incoming patch couldn't be stored
07h had to drop an incoming byte
08h driver is failing a patch download
80h-.. vendors specific errors
58h DWORD Patch Block free callback
5Ch DWORD MIDI byte avail. callback
See Also: #0093,#0101
(Table 0098)
Values for MIDI Registered Patch Types:
10h OPL2
11h OPL3
Format of Volume Info Structure:
Offset Size Description (Table 0099)
00h 4 BYTEs name of the structure ("VOLI")
04h DWORD structure length (00000092h)
08h DWORD driver software version [00000001h]
0Ch 32 BYTEs vendor name, etc. (ASCIZ string)
2Ch 32 BYTEs vendor product name
4Ch 32 BYTEs vendor chip/hardware description
6Ch BYTE installed board number (0 for 1st/only board)
6Dh 3 BYTEs unused data (0)
70h 24 BYTEs text name of the mixer channel
88h DWORD features bits (see #0100)
8Ch WORD minimum volume setting
8Eh WORD maximum volume setting
90h WORD attenuation/gain crossover
See Also: #0089,#0101
Bitfields for Volume feature bits:
Bit(s) Description (Table 0100)
0 Stereo Volume control available
2 Low Pass Filter is available
3 High Pass Filter is available
4 Parametric Tone Control is available
5 selectable output paths
8 Azimuth Field positioning supported
9 Phi Field positioning supported
10-30 unused???
31 Master Volume device
Format of Volume Services Structure:
Offset Size Description (Table 0101)
00h 4 BYTEs name of the structure ("VOLS")
04h DWORD structure length (00000038h)
08h 16 BYTEs 16 bytes for future expansion (0)
---entry points (details???)---
18h DWORD device check
0011h filter range
0012h filter setting
0013h filter current
0014h tone range
0015h tone setting
0016h tone current
0017h path
0018h get IO address
0080h-.. vendors can add DevChks above 0x80
1Ch DWORD set vol to an absolute setting
01h User master volume setting
02h application master volume setting
20h DWORD set 3D volume
24h DWORD tone control
28h DWORD filter control
2Ch DWORD output path
30h DWORD reset channel
34h DWORD get last error
01h unsupported feature/function
02h out of range parameter value
80h+ vendor-specific errors
See Also: #0093,#0097