SysFn55/ru: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
Line 36: Line 36:
=== Подфункция 2 - установить формат данных SB16. ===
=== Подфункция 2 - установить формат данных SB16. ===


Параметры:
''Параметры:''
  * eax = 55 - номер функции
  * ebx = 2 - номер подфункции
  * ecx = 0 - установить разрядность
    * edx = 1 - 8бит моно
    * edx = 2 - 8бит стерео
  * ecx = 1 - установить размер данных
    * edx = размер в байтах
  * ecx = 2 - установить частоту проигрывания
    * edx = частота
Возвращаемое значение:
  * функция не возвращает значения
Замечания:
  * При загрузке системы устанавливаются следующие параметры
    по умолчанию: разрядность - 8 бит моно, размер - 64 Кб,
    частота 44100 Гц. Тем не менее рекомендуется явно устанавливать
    необходимые значения, поскольку они могли быть переустановлены
    какой-нибудь программой.


* eax = 55 - номер функции
* ebx = 2 - номер подфункции
* ecx = 0 - установить разрядность
** edx = 1 - 8бит моно
** edx = 2 - 8бит стерео
* ecx = 1 - установить размер данных
** edx = размер в байтах
* ecx = 2 - установить частоту проигрывания
** edx = частота
''Возвращаемое значение:''
* функция не возвращает значения
''Замечания:''
* При загрузке системы устанавливаются следующие параметры по умолчанию: разрядность - 8 бит моно, размер - 64 Кб, частота 44100 Гц. Тем не менее рекомендуется явно устанавливать необходимые значения, поскольку они могли быть переустановлены какой-нибудь программой.


=== Подфункция 55 - начать проигрывать данные на встроенном спикере. ===
=== Подфункция 55 - начать проигрывать данные на встроенном спикере. ===

Revision as of 16:22, 10 April 2010

Функция 55 - аудио сервис.

Подфункция 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.
  • Функция возвращает управление, сообщив куда следует информацию о запросе. Само проигрывание идёт независимо от программы.
  • Данные должны сохраняться в памяти по крайней мере до конца проигрывания.