SysFn21/ru: Difference between revisions
Jump to navigation
Jump to search
Vitalkrilov (talk | contribs) m ((пропустил "@panel")) |
|||
(17 intermediate revisions by 5 users not shown) | |||
Line 6: | Line 6: | ||
Параметры: | Параметры: | ||
* eax = 21 - номер функции | :* eax = 21 - номер функции | ||
* ebx = 1 - номер подфункции | :* ebx = 1 - номер подфункции | ||
* ecx = номер базового порта | :* ecx = номер базового порта | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* eax = 0 - успешно | :* eax = 0 - успешно | ||
* eax = -1 - ошибочный номер порта | :* eax = -1 - ошибочный номер порта | ||
Замечания: | Замечания: | ||
* Номер порта должен удовлетворять условиям 0x100<=ecx<=0xFFFF. | :* Номер порта должен удовлетворять условиям 0x100<=ecx<=0xFFFF. | ||
* Установка базы нужна для работы функции 20. | :* Установка базы нужна для работы функции 20. | ||
* Получить установленный базовый порт можно вызовом подфункции 1 функции 26. | :* Получить установленный базовый порт можно вызовом | ||
::подфункции 1 функции 26. | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM_SET (21) | |||
::ebx - SSF_MPU_MIDI_BASE (1) | |||
=== Подфункция 2 - установить раскладку клавиатуры. === | === Подфункция 2 - установить раскладку клавиатуры. === | ||
Раскладка клавиатуры используется для преобразования сканкодов, поступающих от клавиатуры, в ASCII-коды, считываемые функцией 2. | Раскладка клавиатуры используется для преобразования сканкодов, | ||
поступающих от клавиатуры, в ASCII-коды, считываемые функцией 2. | |||
Параметры: | Параметры: | ||
* eax = 21 - номер функции | :* eax = 21 - номер функции | ||
* ebx = 2 - номер подфункции | :* ebx = 2 - номер подфункции | ||
* ecx = какую раскладку устанавливать: | :* ecx = какую раскладку устанавливать: | ||
::* 1 = нормальную | |||
::* 2 = раскладку при нажатом Shift | |||
::* 3 = раскладку при нажатом Alt | |||
* edx = указатель на раскладку - таблицу длиной 128 байт | :* edx = указатель на раскладку - таблицу длиной 128 байт | ||
Или: | Или: | ||
* ecx = 9 | :* ecx = 9 | ||
* dx = идентификатор страны (1=eng, 2=fi, 3=ger, 4=rus) | :* dx = идентификатор страны (1=eng, 2=fi, 3=ger, 4=rus) | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* eax = 0 | :* 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 - установить язык системы. === | === Подфункция 5 - установить язык системы. === | ||
Параметры: | Параметры: | ||
* eax = 21 - номер функции | :* eax = 21 - номер функции | ||
* ebx = 5 - номер подфункции | :* ebx = 5 - номер подфункции | ||
* ecx = язык системы (1=eng, 2=fi, 3=ger, 4=rus) | :* ecx = язык системы (1=eng, 2=fi, 3=ger, 4=rus) | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* eax = 0 | :* eax = 0 | ||
Замечания: | Замечания: | ||
* Язык системы - глобальная системная переменная, никак не используемая самим ядром, однако приложение @ | :* Язык системы - глобальная системная переменная, никак | ||
* Проверок на корректность не делается, поскольку ядро эту переменную не использует. | ::не используемая самим ядром, однако приложение @taskbar рисует | ||
* Получить язык системы можно вызовом подфункции 5 функции 26. | ::соответствующую иконку. | ||
:* Проверок на корректность не делается, поскольку ядро эту | |||
::переменную не использует. | |||
:* Получить язык системы можно вызовом подфункции 5 функции 26. | |||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM_SET (21) | |||
::ebx - SSF_SYS_LANG (5) | |||
=== Подфункция | === Подфункция 11 - разрешить/запретить низкоуровневый доступ к HD. === | ||
Параметры: | Параметры: | ||
* eax = 21 - номер функции | :* eax = 21 - номер функции | ||
* ebx = | :* ebx = 11 - номер подфункции | ||
* ecx = | :* ecx = 0/1 - запретить/разрешить | ||
Возвращаемое значение: | Возвращаемое значение: | ||
* eax = 0 | :* eax = 0 | ||
Замечания: | Замечания: | ||
* | :* Используется при LBA-чтении (подфункция 8 функции 58). | ||
* | :* Текущая реализация использует только младший бит ecx. | ||
* Получить | :* Получить текущее состояние можно вызовом подфункции 11 функции 26. | ||
'''Константы для регистров:''' | |||
::eax - SF_SYSTEM_SET (21) | |||
::ebx - SSF_ACCESS_HD_LBA (11) | |||
=== Подфункция 12 - разрешить/запретить низкоуровневый доступ к PCI. === | === Подфункция 12 - разрешить/запретить низкоуровневый доступ к PCI. === | ||
Параметры: | Параметры: | ||
* eax = 21 - номер функции | :* eax = 21 - номер функции | ||
* ebx = 12 - номер подфункции | :* ebx = 12 - номер подфункции | ||
* ecx = 0/1 - запретить/разрешить | :* ecx = 0/1 - запретить/разрешить | ||
Возвращаемое значение: | Возвращаемое значение: | ||
:* eax = 0 | |||
* eax = | |||