Difference between revisions of "SysFn55/ru"
Jump to navigation
Jump to search
Punk Joker (talk | contribs) |
m |
||
Line 1: | Line 1: | ||
− | '''Функция 55 - аудио сервис. | + | '''Функция 55''' - аудио сервис. |
---- | ---- | ||
Line 5: | Line 5: | ||
Параметры: | Параметры: | ||
− | * eax = 55 - номер функции | + | :* eax = 55 - номер функции |
− | * ebx = 55 - номер подфункции | + | :* ebx = 55 - номер подфункции |
− | * esi = указатель на данные | + | :* esi = указатель на данные |
Возвращаемое значение: | Возвращаемое значение: | ||
− | * eax = 0 - успешно | + | :* eax = 0 - успешно |
− | * eax = 55 - ошибка (спикер отключён или занят) | + | :* eax = 55 - ошибка (спикер отключён или занят) |
Данные - это массив элементов переменной длины. | Данные - это массив элементов переменной длины. | ||
Формат каждого элемента определяется первым байтом: | Формат каждого элемента определяется первым байтом: | ||
− | * 0 = конец данных | + | :* 0 = конец данных |
− | * 1..0x80 = задаёт длительность звучания в сотых долях секунды ноты, определяемой непосредственным значением частоты | + | :* 1..0x80 = задаёт длительность звучания в сотых долях секунды ноты, определяемой непосредственным значением частоты |
− | :* следующее слово (2 байта) содержит делитель частоты; | + | ::* следующее слово (2 байта) содержит делитель частоты; |
− | ::частота определяется как 1193180/divider | + | :::частота определяется как 1193180/divider |
− | * 0x81 = invalid | + | :* 0x81 = invalid |
− | * 0x82..0xFF = нота, определяемая октавой и номером: | + | :* 0x82..0xFF = нота, определяемая октавой и номером: |
− | :* длительность в сотых долях секунды = (первый байт)-0x81 | + | ::* длительность в сотых долях секунды = (первый байт)-0x81 |
− | :* присутствует ещё один байт; | + | ::* присутствует ещё один байт; |
− | :* (второй байт)=0xFF - пауза | + | ::* (второй байт)=0xFF - пауза |
− | :* иначе он имеет вид a*0x10+b, где b=номер ноты в октаве от 1 до 12, a=номер октавы (считая с 0) | + | ::* иначе он имеет вид a*0x10+b, где b=номер ноты в октаве от 1 до 12, a=номер октавы (считая с 0) |
Замечания: | Замечания: | ||
− | * Пищание спикером может быть запрещено/разрешено подфункцией 8 функции 18. | + | :* Пищание спикером может быть запрещено/разрешено подфункцией 8 [[SysFn18/ru|функции 18]]. |
− | * Функция возвращает управление, сообщив куда следует информацию о запросе. Само проигрывание идёт независимо от программы. | + | :* Функция возвращает управление, сообщив куда следует информацию о запросе. Само проигрывание идёт независимо от программы. |
− | * Данные должны сохраняться в памяти по крайней мере до конца проигрывания. | + | :* Данные должны сохраняться в памяти по крайней мере до конца проигрывания. |
+ | |||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_SPEAKER_PLAY (55) | ||
{{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)
|