Difference between revisions of "SysFn21/ru"
Jump to navigation
Jump to search
(sysfn21) |
Vitalkrilov (talk | contribs) m ((пропустил "@panel")) |
||
(18 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 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Замечания: | Замечания: | ||
− | * | + | :* Используется при работе с шиной PCI (функция 62). |
− | * | + | :* Текущая реализация использует только младший бит ecx. |
+ | :* Получить текущее состояние можно вызовом подфункции 12 функции 26. | ||
+ | '''Константы для регистров:''' | ||
+ | ::eax - SF_SYSTEM_SET (21) | ||
+ | ::ebx - SSF_ACCESS_PCI (12) | ||
{{System_functions}} | {{System_functions}} | ||
[[Category: SysCalls]] | [[Category: SysCalls]] |
Latest revision as of 15:34, 12 January 2022
Функция 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)
|