SysFn55/ru: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
No edit summary
mNo edit summary
 
(11 intermediate revisions by 4 users not shown)
Line 1: Line 1:
'''Подфункция 55 - начать проигрывать данные на встроенном спикере.'''
'''Функция 55''' - аудио сервис.
----


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


* eax = 55 - номер функции
Параметры:
* ebx = 55 - номер подфункции
:* eax = 55 - номер функции
* esi = указатель на данные
:* ebx = 55 - номер подфункции
 
:* esi = указатель на данные
''Возвращаемое значение:''
Возвращаемое значение:
 
:* eax = 0 - успешно
* eax = 0 - успешно
:* eax = 55 - ошибка (спикер отключён или занят)
* 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)