INT 10 - VESA(Video Electronics Standards Association)  An industry group which sets both hardware and software standards and recommendations. The term VESA is also used to denote compliance with the VESA SuperVGA BIOS Extensions, a standard set of video BIOS functions for accessing video modes of higher resolution than those defined by IBMInternational Busiuness Machines. VBE(VESA BIOS Extensions) The common software interface for video cards providing support for high resolution and bit depth./AI (Audio Interface) - QUERY DEVICE
	AX = 4F13h
	BX = 0002h
	CX = handle
	DX = query
	    0001h return length of GeneralDeviceClass
	    0002h return copy	of GeneralDeviceClass (see #00112)
	    0003h return length of Volume Info Structure
	    0004h return copy	of Volume Info Structure (see #00122)
	    0005h return length of Volume Services Structure
	    0006h return copy	of Volume Services Structure (see #00124)
	    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 00112)
 00h	4 BYTEs	name of the structure ("GENI")
 04h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	structure length
 08h	WORD	type of device (1=Wave, 2=MIDI(Musical Instrument Digital Interface) A standardized interface for controlling musical instruments with a computer.)
 0Ah	WORD	version of VESA(Video Electronics Standards Association)  An industry group which sets both hardware and software standards and recommendations. The term VESA is also used to denote compliance with the VESA SuperVGA BIOS Extensions, a standard set of video BIOS functions for accessing video modes of higher resolution than those defined by IBMInternational Busiuness Machines. driver support (0100h for 1.00)
 10h	var	for CX=handle for Wave device:
		    Wave Info structure (see #00113)
		    some bytes ???
		for CX=handle for MIDI(Musical Instrument Digital Interface) A standardized interface for controlling musical instruments with a computer. device:
		    MIDI(Musical Instrument Digital Interface) A standardized interface for controlling musical instruments with a computer. Info Structure (see #00118)
		    first 8 bytes of MIDI(Musical Instrument Digital Interface) A standardized interface for controlling musical instruments with a computer. Service Structure ???
SeeAlso: #00122,#00124


Format of WAVE Info Structure:
Offset	Size	Description	(Table 00113)
 00h	4 BYTEs	name of the structure ("WAVI")
 04h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	structure length [0000007Eh]
 08h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	driver software version [00000003h]
 0Ch 32 BYTEs	vendor name, etc. (ASCIZA NUL-terminated ASCII string.	The ASCIZ string "ABC" consists of the four bytes 41h, 42h, 43h, and 00h.  Unless otherwise specified, maximum lengths given in the interrupt list do not include the terminating NUL. 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	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	feature bits (see #00114)
 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 #00115)
SeeAlso: #00118


Bitfields for Wave feature bits:
Bit(s)	Description	(Table 00114)
 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 00115)
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 00116)
 00h	4 BYTEs	name of the structure
 04h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	structure length
 08h 16 BYTEs	for future expansion
---entry points (details???)---
 18h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	DeviceCheck
		11h compression (see also #00117)
		12h driver state
		13h get current pos
		14h sample rate
		15h set preference
		16h get DMAsee Direct Memory Access,IRQ(Interrupt ReQuest) A hardware line connected to the interrupt controller chip which signals that a CPU interrupt should be generated.
		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	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	PCMInfo
 20h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	PlayBlock
 24h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	PlayCont
 28h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	RecordBlock
 2Ch	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	RecordCont
 30h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	PauseIO
 34h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	ResumeIO
 38h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	StopIO
 3Ch	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	WavePrepare
 40h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	WaveRegister
 44h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	GetLastError
		01h unsupported feature/function
		02h bad sample rate
		03h bad block length
		04h bad block address
		05h app. missed an IRQ(Interrupt ReQuest) A hardware line connected to the interrupt controller chip which signals that a CPU interrupt should be generated.
		06h don't understand the PCM size/format
		80h-.. vendors specific errors
 48h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	TimerTick
 4Ch	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	ApplPSyncCB: CallBack: play filled in by the app
 50h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	ApplRSyncCB: CallBack: rec filled in by the app
SeeAlso: #00120,#00124


(Table 00117)
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(Musical Instrument Digital Interface) A standardized interface for controlling musical instruments with a computer. Info Structure:
Offset	Size	Description	(Table 00118)
 00h	4 BYTEs	name of the structure ("MIDI(Musical Instrument Digital Interface) A standardized interface for controlling musical instruments with a computer.")
 04h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	structure length
 08h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	driver software version [00000003h]
 0Ch 32 BYTEs	vendor name, etc. (ASCIZA NUL-terminated ASCII string.	The ASCIZ string "ABC" consists of the four bytes 41h, 42h, 43h, and 00h.  Unless otherwise specified, maximum lengths given in the interrupt list do not include the terminating NUL. 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	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	feature bits (see #00119)
 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)
SeeAlso: #00112,#00120,#00122


Bitfields for MIDI(Musical Instrument Digital Interface) A standardized interface for controlling musical instruments with a computer. feature bits:
Bit(s)	Description	(Table 00119)
 0-3	reserved for GM extensions
 4	Transmitter/Receiver only
 5	Patches preloaded
 6	MIDI(Musical Instrument Digital Interface) A standardized interface for controlling musical instruments with a computer. receive has time stamp
 8	MIDI(Musical Instrument Digital Interface) A standardized interface for controlling musical instruments with a computer. interrupt driven input supported
 9	MIDI(Musical Instrument Digital Interface) A standardized interface for controlling musical instruments with a computer. polled input supported
 10	MIDI(Musical Instrument Digital Interface) A standardized interface for controlling musical instruments with a computer. remote patches supported


Format of MIDI(Musical Instrument Digital Interface) A standardized interface for controlling musical instruments with a computer. Service structure:
Offset	Size	Description	(Table 00120)
 00h	4 BYTEs	name of the structure ("MIDS")
 04h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	structure length
 08h 16 WORDs	patches loaded table bit field
 28h 16 BYTEs	for future expansion
---entry points (details???)---
 38h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	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 DMAsee Direct Memory Access,IRQ(Interrupt ReQuest) A hardware line connected to the interrupt controller chip which signals that a CPU interrupt should be generated.
		17h get IO address
		18h get mem address
		19h get mem free
		80h-.. vendors can add DevChks above 0x80
 3Ch	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	global reset
 40h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	MIDI(Musical Instrument Digital Interface) A standardized interface for controlling musical instruments with a computer. msg
 44h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	poll MIDI(Musical Instrument Digital Interface) A standardized interface for controlling musical instruments with a computer.
 48h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	preload patch
 4Ch	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	unload patch
 50h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	timer tick
 54h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	get last error
		01h unsupported feature/function
		02h unknown patch type (see #00121)
		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	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	Patch Block free callback
 5Ch	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	MIDI(Musical Instrument Digital Interface) A standardized interface for controlling musical instruments with a computer. byte avail. callback
SeeAlso: #00116,#00124


(Table 00121)
Values for MIDI(Musical Instrument Digital Interface) A standardized interface for controlling musical instruments with a computer. Registered Patch Types:
 10h	OPL2
 11h	OPL3


Format of Volume Info Structure:
Offset	Size	Description	(Table 00122)
 00h  4	BYTEs	name of the structure ("VOLI")
 04h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	structure length (00000092h)
 08h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	driver software version [00000001h]
 0Ch 32 BYTEs	vendor name, etc. (ASCIZA NUL-terminated ASCII string.	The ASCIZ string "ABC" consists of the four bytes 41h, 42h, 43h, and 00h.  Unless otherwise specified, maximum lengths given in the interrupt list do not include the terminating NUL. 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	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	features bits (see #00123)
 8Ch	WORD	minimum volume setting
 8Eh	WORD	maximum volume setting
 90h	WORD	attenuation/gain crossover
SeeAlso: #00112,#00124


Bitfields for Volume feature bits:
Bit(s)	Description	(Table 00123)
 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 00124)
 00h	4 BYTEs	name of the structure ("VOLS")
 04h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	structure length (00000038h)
 08h 16 BYTEs	16 bytes for future expansion (0)
---entry points (details???)---
 18h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	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	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	set vol to an absolute setting
		01h User master volume setting
		02h application master volume setting
 20h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	set 3D volume
 24h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	tone control
 28h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	filter control
 2Ch	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	output path
 30h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	reset channel
 34h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	get last error
		01h unsupported feature/function
		02h out of range parameter value
		80h+ vendor-specific errors
SeeAlso: #00116,#00120