SysFn55/ru: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
(Undo revision 3316 by Gotosee (talk))
mNo edit summary
 
(4 intermediate revisions by one other user not shown)
Line 1: Line 1:
'''Функция 55 - аудио сервис.'''
'''Функция 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 - начать проигрывать данные на встроенном спикере. ===
=== Подфункция 55 - начать проигрывать данные на встроенном спикере. ===


''Параметры:''
Параметры:
 
:* eax = 55 - номер функции
* eax = 55 - номер функции
:* ebx = 55 - номер подфункции
* ebx = 55 - номер подфункции
:* esi = указатель на данные
* esi = указатель на данные
Возвращаемое значение:
 
:* eax = 0 - успешно
''Возвращаемое значение:''
:* eax = 55 - ошибка (спикер отключён или занят)
 
Данные - это массив элементов переменной длины.
* 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 [[SysFn18/ru|функции 18]].
:* Функция возвращает управление, сообщив куда следует информацию о запросе. Само проигрывание идёт независимо от программы.
:* Данные должны сохраняться в памяти по крайней мере до конца проигрывания.


* 0 = конец данных
'''Константы для регистров:'''
* 1..0x80 = задаёт длительность звучания в сотых долях секунды ноты, определяемой непосредственным значением частоты
::eax - SF_SPEAKER_PLAY (55)
** следующее слово (2 байта) содержит делитель частоты; частота определяется как 1193180/divider
* 0x81 = invalid
* 0x82..0xFF = нота, определяемая октавой и номером:
** длительность в сотых долях секунды = (первый байт)-0x81
** присутствует ещё один байт;
** (второй байт)=0xFF - пауза
** иначе он имеет вид a*0x10+b, где b=номер ноты в октаве от 1 до 12, a=номер октавы (считая с 0)
 
''Замечания:''
 
* Пищание спикером может быть запрещено/разрешено подфункцией 8 функции 18.
* Функция возвращает управление, сообщив куда следует информацию о запросе. Само проигрывание идёт независимо от программы.
* Данные должны сохраняться в памяти по крайней мере до конца проигрывания.


{{System_functions}}
{{System_functions}}
[[Category: SysCalls]]
[[Category: SysCalls]]

Latest revision as of 19:07, 17 January 2016

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


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

Константы для регистров:

eax - SF_SPEAKER_PLAY (55)