SysFn55/ru: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
=== Подфункция 0 - загрузить данные для SB16. === | |||
Параметры: | |||
* eax = 55 - номер функции | |||
* ebx = 0 - номер подфункции | |||
* ecx = указатель на данные (копируется 64 килобайта, используется | |||
столько, сколько установлено подфункцией 2) | |||
Возвращаемое значение: | |||
* функция не возвращает значения | |||
Замечания: | |||
* Формат и размер данных устанавливаются подфункцией 2. | |||
=== Подфункция 1 - начать проигрывать данные на SB16. === | |||
Параметры: | |||
* eax = 55 - номер функции | |||
* ebx = 1 - номер подфункции | |||
Возвращаемое значение: | |||
* функция не возвращает значения | |||
Замечания: | |||
* Предварительно данные должны быть загружены подфункцией 0 и | |||
определён их формат подфункцией 2. | |||
* Функция возвращает управление, когда началось проигрывание данных; | |||
после этого проигрывание идёт независимо от приложения (и вообще | |||
не требует загрузки процессора). | |||
* Предварительно должны быть определены базовый порт SB16 | |||
(подфункцией 4 функции 21) и канал DMA | |||
(подфункцией 10 функции 21). | |||
=== Подфункция 2 - установить формат данных SB16. === | |||
Параметры: | |||
* eax = 55 - номер функции | |||
* ebx = 2 - номер подфункции | |||
* ecx = 0 - установить разрядность | |||
* edx = 1 - 8бит моно | |||
* edx = 2 - 8бит стерео | |||
* ecx = 1 - установить размер данных | |||
* edx = размер в байтах | |||
* ecx = 2 - установить частоту проигрывания | |||
* edx = частота | |||
Возвращаемое значение: | |||
* функция не возвращает значения | |||
Замечания: | |||
* При загрузке системы устанавливаются следующие параметры | |||
по умолчанию: разрядность - 8 бит моно, размер - 64 Кб, | |||
частота 44100 Гц. Тем не менее рекомендуется явно устанавливать | |||
необходимые значения, поскольку они могли быть переустановлены | |||
какой-нибудь программой. | |||
=== Подфункция 55 - начать проигрывать данные на встроенном спикере. === | |||
''Параметры:'' | ''Параметры:'' |
Revision as of 16:19, 10 April 2010
Подфункция 0 - загрузить данные для SB16.
Параметры:
* eax = 55 - номер функции * ebx = 0 - номер подфункции * ecx = указатель на данные (копируется 64 килобайта, используется столько, сколько установлено подфункцией 2)
Возвращаемое значение:
* функция не возвращает значения
Замечания:
* Формат и размер данных устанавливаются подфункцией 2.
Подфункция 1 - начать проигрывать данные на SB16.
Параметры:
* eax = 55 - номер функции * ebx = 1 - номер подфункции
Возвращаемое значение:
* функция не возвращает значения
Замечания:
* Предварительно данные должны быть загружены подфункцией 0 и определён их формат подфункцией 2. * Функция возвращает управление, когда началось проигрывание данных; после этого проигрывание идёт независимо от приложения (и вообще не требует загрузки процессора). * Предварительно должны быть определены базовый порт SB16 (подфункцией 4 функции 21) и канал DMA (подфункцией 10 функции 21).
Подфункция 2 - установить формат данных SB16.
Параметры:
* eax = 55 - номер функции * ebx = 2 - номер подфункции * ecx = 0 - установить разрядность * edx = 1 - 8бит моно * edx = 2 - 8бит стерео * ecx = 1 - установить размер данных * edx = размер в байтах * ecx = 2 - установить частоту проигрывания * edx = частота
Возвращаемое значение:
* функция не возвращает значения
Замечания:
* При загрузке системы устанавливаются следующие параметры по умолчанию: разрядность - 8 бит моно, размер - 64 Кб, частота 44100 Гц. Тем не менее рекомендуется явно устанавливать необходимые значения, поскольку они могли быть переустановлены какой-нибудь программой.
Подфункция 55 - начать проигрывать данные на встроенном спикере.
Параметры:
- eax = 55 - номер функции
- ebx = 55 - номер подфункции
- esi = указатель на данные
Возвращаемое значение:
- eax = 0 - успешно
- eax = 55 - ошибка (спикер отключён или занят)
Данные - это массив элементов переменной длины. Формат каждого элемента определяется первым байтом:
- 0 = конец данных
- 1..0x80 = задаёт длительность звучания в сотых долях секунды ноты, определяемой непосредственным значением частоты
- следующее слово (2 байта) содержит делитель частоты; частота определяется как 1193180/divider
- 0x81 = invalid
- 0x82..0xFF = нота, определяемая октавой и номером:
- длительность в сотых долях секунды = (первый байт)-0x81
- присутствует ещё один байт;
- (второй байт)=0xFF - пауза
- иначе он имеет вид a*0x10+b, где b=номер ноты в октаве от 1 до 12, a=номер октавы (считая с 0)
Замечания:
- Пищание спикером может быть запрещено/разрешено подфункцией 8 функции 18.
- Функция возвращает управление, сообщив куда следует информацию о запросе. Само проигрывание идёт независимо от программы.
- Данные должны сохраняться в памяти по крайней мере до конца проигрывания.
|