SysFn55/ru

From KolibriOS wiki
Revision as of 16:16, 10 April 2010 by Kogemyaka (talk | contribs)
Jump to navigation Jump to search

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