SysFn26/ru

From KolibriOS wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Функция 26 - аппаратный сервис


Подфункция 1 - получить базовый порт MPU MIDI.

Параметры:

  • eax = 26 - номер функции
  • ebx = 1 - номер подфункции

Возвращаемое значение:

  • eax = номер порта

Замечания:

  • Установить базовый порт можно вызовом
подфункции 1 функции 21.

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

eax - SF_SYSTEM_GET (26)
ebx - SSF_MPU_MIDI_BASE (1)

Подфункция 2 - получить раскладку клавиатуры.

Раскладка клавиатуры используется для преобразования сканкодов, поступающих от клавиатуры, в ASCII-коды, считываемые функцией 2. Параметры:

  • eax = 26 - номер функции
  • ebx = 2 - номер подфункции
  • ecx = какую раскладку получать:
  • 1 = нормальную
  • 2 = раскладку при нажатом Shift
  • 3 = раскладку при нажатом Alt
  • edx = указатель на буфер длиной 128 байт, куда будет скопирована
раскладка

Возвращаемое значение:

  • функция не возвращает значения
но, если указатель в edx недопустимый, например,
регион [edx, edx + 128) пересекается с памятью ядра,
то тогда функция возвращает -1

Или:

  • 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.
  • Идентификатор страны - глобальная системная переменная, которая
самим ядром не используется; однако приложение @taskbar отображает
соответствующую текущей стране иконку
(используя описываемую функцию).
  • Приложение @taskbar переключает раскладки по запросу пользователя.

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

eax - SF_SYSTEM_GET (26)
ebx - SSF_KEYBOARD_LAYOUT (2)

Подфункция 5 - получить язык системы.

Параметры:

  • eax = 26 - номер функции
  • ebx = 5 - номер подфункции

Возвращаемое значение:

  • eax = язык системы (1=eng, 2=fi, 3=ger, 4=rus)

Замечания:

  • Язык системы - глобальная системная переменная, никак
не используемая самим ядром, однако приложение @taskbar рисует
соответствующую иконку (используя описываемую функцию).
  • Установить язык системы можно вызовом подфункции 5 функции 21.

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

eax - SF_SYSTEM_GET (26)
ebx - SSF_SYS_LANG (5)

Подфункция 9 - получить значение счётчика времени.

Параметры:

  • eax = 26 - номер функции
  • ebx = 9 - номер подфункции

Возвращаемое значение:

  • eax = число сотых долей секунды, прошедших с момента
запуска системы

Замечания:

  • Счётчик берётся по модулю 2^32, что соответствует немногим более
497 суток.
  • Системное время можно получить функцией 3.

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

eax - SF_SYSTEM_GET (26)
ebx - SSF_TIME_COUNT (9)

Подфункция 10 - получить значение высокоточного счётчика времени.

Параметры:

  • eax = 26 - номер функции
  • ebx = 10 - номер подфункции

Возвращаемое значение:

  • edx:eax = число наносекунд с момента загрузки ядра
  • eax = младшее двойное слово
  • edx = старшее двойное слово

Замечание:

  • функция использует счётчик HPET, если HPET не доступен используется
счётчик PIT. В этом случае точность будет уменьшена до 10 000 000
наносекунд.

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

eax - SF_SYSTEM_GET (26)
ebx - SSF_TIME_COUNT_PRO (10)

Подфункция 11 - узнать, разрешён ли низкоуровневый доступ к HD.

Параметры:

  • eax = 26 - номер функции
  • ebx = 11 - номер подфункции

Возвращаемое значение:

  • eax = 0/1 - запрещён/разрешён

Замечания:

  • Используется при LBA-чтении (подфункция 8 функции 58).
  • Установить текущее состояние можно вызовом
подфункции 11 функции 21.

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

eax - SF_SYSTEM_GET (26)
ebx - SSF_ACCESS_HD_LBA (11)

Подфункция 12 - узнать, разрешён ли низкоуровневый доступ к PCI.

Параметры:

  • eax = 26 - номер функции
  • ebx = 12 - номер подфункции

Возвращаемое значение:

  • eax = 0/1 - запрещён/разрешён

Замечания:

  • Используется при работе с шиной PCI (функция 62).
  • Текущая реализация использует только младший бит ecx.
  • Установить текущее состояние можно вызовом
подфункции 12 функции 21.

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

eax - SF_SYSTEM_GET (26)
ebx - SSF_ACCESS_PCI (12)