SysFn21/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.

Функция 21 - установка системных параметров


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

Параметры:

  • eax = 21 - номер функции
  • ebx = 1 - номер подфункции
  • ecx = номер базового порта

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

  • eax = 0 - успешно
  • eax = -1 - ошибочный номер порта

Замечания:

  • Номер порта должен удовлетворять условиям 0x100<=ecx<=0xFFFF.
  • Установка базы нужна для работы функции 20.
  • Получить установленный базовый порт можно вызовом
подфункции 1 функции 26.

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

eax - SF_SYSTEM_SET (21)
ebx - SSF_MPU_MIDI_BASE (1)

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

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

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

Или:

  • ecx = 9
  • dx = идентификатор страны (1=eng, 2=fi, 3=ger, 4=rus)

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

  • eax = 0 - успешно
  • eax = 1 - параметр задан неверно

Замечания:

  • Если нажат Alt, то используется раскладка с Alt;
если не нажат Alt, но нажат Shift, то
используется раскладка с Shift;
если не нажаты Alt и Shift, но нажат Ctrl, то используется
нормальная раскладка, после чего из кода вычитается 0x60;
если не нажата ни одна из управляющих клавиш, то используется
нормальная раскладка.
  • Получить раскладки и идентификатор страны можно с помощью
подфункции 2 функции 26.
  • Идентификатор страны - глобальная системная переменная, которая
самим ядром не используется; однако приложение @taskbar отображает
соответствующую текущей стране иконку.
  • Приложение @taskbar переключает раскладки по запросу пользователя.

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

eax - SF_SYSTEM_SET (21)
ebx - SSF_KEYBOARD_LAYOUT (2)

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

Параметры:

  • eax = 21 - номер функции
  • ebx = 5 - номер подфункции
  • ecx = язык системы (1=eng, 2=fi, 3=ger, 4=rus)

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

  • eax = 0

Замечания:

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

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

eax - SF_SYSTEM_SET (21)
ebx - SSF_SYS_LANG (5)

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

Параметры:

  • eax = 21 - номер функции
  • ebx = 11 - номер подфункции
  • ecx = 0/1 - запретить/разрешить

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

  • eax = 0

Замечания:

  • Используется при LBA-чтении (подфункция 8 функции 58).
  • Текущая реализация использует только младший бит ecx.
  • Получить текущее состояние можно вызовом подфункции 11 функции 26.

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

eax - SF_SYSTEM_SET (21)
ebx - SSF_ACCESS_HD_LBA (11)

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

Параметры:

  • eax = 21 - номер функции
  • ebx = 12 - номер подфункции
  • ecx = 0/1 - запретить/разрешить

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

  • eax = 0

Замечания:

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

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

eax - SF_SYSTEM_SET (21)
ebx - SSF_ACCESS_PCI (12)