Ru/api/kernel: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
m (see SysFnXX/ru !)
Line 18: Line 18:
Описание функции перенесено в отдельную статью: [[SysFn01/ru | Функция 1]]
Описание функции перенесено в отдельную статью: [[SysFn01/ru | Функция 1]]


= Функция 2 - получить код нажатой клавиши. ==
== Функция 2 - получить код нажатой клавиши. ==


Извлекает из буфера код нажатой клавиши.
Извлекает из буфера код нажатой клавиши.
Line 109: Line 109:
== Функция 23 - ожидать события с таймаутом. ==
== Функция 23 - ожидать события с таймаутом. ==


Если очередь сообщений пуста, ждёт появления сообщения в очереди,
Описание функции перенесено в отдельную статью: [[SysFn23/ru|Функция 23]]
но не более указанного времени. Затем считывает сообщение из очереди.


Параметры:
== Функция 24 - работа с проигрывателем компакт-дисков ==
  * eax = 23 - номер функции
  * ebx = таймаут (в сотых долях секунды)
Возвращаемое значение:
  * eax = 0 - очередь сообщений пуста
  * иначе eax = событие (смотри список событий)
Замечания:
  * Учитываются только те события, которые входят в маску,
    устанавливаемую функцией 40. По умолчанию это события
    перерисовки, нажатия на клавиши и на кнопки.
  * Для проверки, есть ли сообщение в очереди, используйте функцию 11.
    Чтобы ждать сколь угодно долго, используйте функцию 10.
  * Передача ebx=0 приводит к моментальному возвращению eax=0.
  * При текущей реализации произойдёт немедленный возврат из функции
    с eax=0, если сложение ebx с текущим значением счётчика времени
    вызовет 32-битное переполнение.
 
 
=== Подфункция 1 - начать проигрывать CD-audio. ===
 
Параметры:
  * eax = 24 - номер функции
  * ebx = 1 - номер подфункции
  * ecx = 0x00FRSSMM, где
    * MM = начальная минута
    * SS = начальная секунда
    * FR = начальный фрейм
Возвращаемое значение:
  * eax = 0 - успешно
  * eax = 1 - не определена база CD
Замечания:
  * Предварительно нужно определить базовый порт CD вызовом
    подфункции 3 функции 21.
  * В секунде 75 фреймов, в минуте 60 секунд.
  * Функция асинхронна (возвращает управление, когда началось
    проигрывание).
 
 
=== Подфункция 2 - получить информацию о дорожках. ===
 
Параметры:
  * eax = 24 - номер функции
  * ebx = 2 - номер подфункции
  * ecx = указатель на буфер для таблицы
    (максимум 8*64h+4 байт=100 дорожек)
Возвращаемое значение:
  * eax = 0 - успешно
  * eax = 1 - не определена база CD
Замечания:
  * Формат таблицы с информацией о дорожках такой же, как и для
    ATAPI-CD команды 43h (READ TOC), обычной таблицы (подкоманда 00h).
    Адреса возвращаются в формате MSF.
  * Предварительно нужно определить базовый порт CD вызовом
    подфункции 3 функции 21.
  * Функция возвращает информацию только о не более чем 100
    первых дорожках. В большинстве случаев этого достаточно.
 
 
=== Подфункция 3 - остановить проигрываемое CD-audio. ===
 
Параметры:
  * eax = 24 - номер функции
  * ebx = 1 - номер подфункции
Возвращаемое значение:
  * eax = 0 - успешно
  * eax = 1 - не определена база CD
Замечания:
  * Предварительно нужно определить базовый порт CD вызовом
    подфункции 3 функции 21.
 
 
=== Подфункция 4 - извлечь лоток привода диска. ===
 
Параметры:
  * eax = 24 - номер функции
  * ebx = 4 - номер подфункции
  * ecx = номер CD/DVD-диска
      (от 0=Primary Master до 3=Secondary Slave)
Возвращаемое значение:
  * функция не возвращает значения
Замечания:
  * Функция поддерживается только для ATAPI-устройств (CD и DVD).
  * При извлечении лотка производится разблокировка ручного управления
    механизмом лотка.
  * При извлечении лотка код производит очистку кэша соответствующего
    устройства.
  * Примером использования функции является приложение CD_tray.
 
 
=== Подфункция 5 - загрузить лоток привода диска. ===
 
Параметры:
  * eax = 24 - номер функции
  * ebx = 5 - номер подфункции
  * ecx = номер CD/DVD-диска
      (от 0=Primary Master до 3=Secondary Slave)
Возвращаемое значение:
  * функция не возвращает значения
Замечания:
  * Функция поддерживается только для ATAPI-устройств (CD и DVD).
  * Примером использования функции является приложение CD_tray.


Описание функции перенесено в отдельную статью: [[SysFn24/ru|Функция 24]]


== Функция 25 - установить громкость SBPro. ==
== Функция 25 - установить громкость SBPro. ==


Удалена
''Удалена''
 
 
=== Подфункция 1 - получить базовый порт MPU MIDI. ===
 
Параметры:
  * eax = 26 - номер функции
  * ebx = 1 - номер подфункции
Возвращаемое значение:
  * eax = номер порта
Замечания:
  * Установить базовый порт можно вызовом
    подфункции 1 функции 21.
 
 
=== Подфункция 2 - получить раскладку клавиатуры. ===
 
Раскладка клавиатуры используется для преобразования сканкодов,
поступающих от клавиатуры, в ASCII-коды, считываемые функцией 2.
Параметры:
  * eax = 26 - номер функции
  * ebx = 2 - номер подфункции
  * ecx = какую раскладку получать:
    * 1 = нормальную
    * 2 = раскладку при нажатом Shift
    * 3 = раскладку при нажатом Alt
  * edx = указатель на буфер длиной 128 байт, куда будет скопирована
    раскладка
Возвращаемое значение:
  * функция не возвращает значения
Или:
  * eax = 26 - номер функции
  * ebx = 2 - номер подфункции
  * ecx = 9
Возвращаемое значение:
  * eax = идентификатор страны (1=eng, 2=fi, 3=ger, 4=rus)
Замечания:
  * Если нажат Alt, то используется раскладка с Alt;
    если не нажат Alt, но нажат Shift, то используется
    раскладка с Shift;
    если не нажаты Alt и Shift, но нажат Ctrl, то используется
    нормальная раскладка, после чего из кода вычитается 0x60;
    если не нажата ни одна из управляющих клавиш, то используется
    нормальная раскладка.
  * Установить раскладки и идентификатор страны можно с помощью
    подфункции 2 функции 21.
  * Идентификатор страны - глобальная системная переменная, которая
    самим ядром не используется; однако приложение @panel отображает
    соответствующую текущей стране иконку
    (используя описываемую функцию).
  * Приложение @panel переключает раскладки по запросу пользователя.
 
 
=== Подфункция 3 - получить базу CD. ===
 
Параметры:
  * eax = 26 - номер функции
  * ebx = 3 - номер подфункции
Возвращаемое значение:
  * eax = база CD: 1=IDE0, 2=IDE1, 3=IDE2, 4=IDE3
Замечания:
  * База CD используется функцией 24.
  * Установить базу CD можно вызовом подфункции 3 функции 21.
 
 
=== Подфункция 4 - получить базовый порт Sound Blaster. ===
 
Удалена
 
 
=== Подфункция 5 - получить язык системы. ===
 
Параметры:
  * eax = 26 - номер функции
  * ebx = 5 - номер подфункции
Возвращаемое значение:
  * eax = язык системы (1=eng, 2=fi, 3=ger, 4=rus)
Замечания:
  * Язык системы - глобальная системная переменная, никак
    не используемая самим ядром, однако приложение @panel рисует
    соответствующую иконку (используя описываемую функцию).
  * Установить язык системы можно вызовом подфункции 5 функции 21.
 
 
=== Подфункция 7 - получить базу HD. ===
 
База HD нужна для определения, на какой жёсткий диск писать, при
использовании устаревшего синтаксиса /HD в устаревшей функции 58;
при использовании современного синтаксиса /HD0,/HD1,/HD2,/HD3
база устанавливается автоматически.
Параметры:
  * eax = 26 - номер функции
  * ebx = 7 - номер подфункции
Возвращаемое значение:
  * eax = база HD: 1=IDE0, 2=IDE1, 3=IDE2, 4=IDE3
Замечания:
  * Любое приложение в любой момент времени может изменить базу.
  * Установить базу можно вызовом подфункции 7 функции 21.
  * Получить используемый раздел жёсткого диска можно подфункцией 8.
 
 
=== Подфункция 8 - получить раздел HD. ===
 
Раздел HD нужен для определения, на какой раздел жёсткого диска
писать, при использовании устаревшего синтаксиса /HD в устаревшей
функции 58; при использовании современного синтаксиса
/HD0,/HD1,/HD2,/HD3 база и раздел устанавливаются автоматически.