Difference between revisions of "SysFn26/ru"

From KolibriOS wiki
Jump to navigation Jump to search
m ((пропустил "@panel"))
 
(9 intermediate revisions by 5 users not shown)
Line 12: Line 12:
 
:* Установить базовый порт можно вызовом
 
:* Установить базовый порт можно вызовом
 
::подфункции 1 функции 21.
 
::подфункции 1 функции 21.
 +
 +
'''Константы для регистров:'''
 +
::eax - SF_SYSTEM_GET (26)
 +
::ebx - SSF_MPU_MIDI_BASE (1)
  
 
=== Подфункция 2 - получить раскладку клавиатуры. ===
 
=== Подфункция 2 - получить раскладку клавиатуры. ===
Line 28: Line 32:
 
Возвращаемое значение:
 
Возвращаемое значение:
 
:* функция не возвращает значения
 
:* функция не возвращает значения
 +
::но, если указатель в edx недопустимый, например,
 +
::регион [edx, edx + 128) пересекается с памятью ядра,
 +
::то тогда функция возвращает -1
 
Или:
 
Или:
 
:* eax = 26 - номер функции
 
:* eax = 26 - номер функции
Line 45: Line 52:
 
::подфункции 2 функции 21.
 
::подфункции 2 функции 21.
 
:* Идентификатор страны - глобальная системная переменная, которая
 
:* Идентификатор страны - глобальная системная переменная, которая
::самим ядром не используется; однако приложение @panel отображает
+
::самим ядром не используется; однако приложение @taskbar отображает
 
::соответствующую текущей стране иконку
 
::соответствующую текущей стране иконку
 
::(используя описываемую функцию).
 
::(используя описываемую функцию).
:* Приложение @panel переключает раскладки по запросу пользователя.
+
:* Приложение @taskbar переключает раскладки по запросу пользователя.
  
=== Подфункция 3 - получить базу CD. ===
+
'''Константы для регистров:'''
 
+
::eax - SF_SYSTEM_GET (26)
Параметры:
+
::ebx - SSF_KEYBOARD_LAYOUT (2)
:* eax = 26 - номер функции
 
:* ebx = 3 - номер подфункции
 
Возвращаемое значение:
 
:* eax = база CD: 1=IDE0, 2=IDE1, 3=IDE2, 4=IDE3
 
Замечания:
 
:* База CD используется функцией 24.
 
:* Установить базу CD можно вызовом подфункции 3 функции 21.
 
 
 
=== Подфункция 4 - получить базовый порт Sound Blaster. ===
 
 
 
Удалена
 
  
 
=== Подфункция 5 - получить язык системы. ===
 
=== Подфункция 5 - получить язык системы. ===
Line 74: Line 70:
 
Замечания:
 
Замечания:
 
:* Язык системы - глобальная системная переменная, никак
 
:* Язык системы - глобальная системная переменная, никак
::не используемая самим ядром, однако приложение @panel рисует
+
::не используемая самим ядром, однако приложение @taskbar рисует
 
::соответствующую иконку (используя описываемую функцию).
 
::соответствующую иконку (используя описываемую функцию).
 
:* Установить язык системы можно вызовом подфункции 5 функции 21.
 
:* Установить язык системы можно вызовом подфункции 5 функции 21.
  
=== Подфункция 7 - получить базу HD. ===
+
'''Константы для регистров:'''
 +
::eax - SF_SYSTEM_GET (26)
 +
::ebx - SSF_SYS_LANG (5)
  
База HD нужна для определения, на какой жёсткий диск писать, при использовании устаревшего синтаксиса /HD в устаревшей функции 58;
+
=== Подфункция 9 - получить значение счётчика времени. ===
при использовании современного синтаксиса /HD0,/HD1,/HD2,/HD3 база устанавливается автоматически.
 
 
Параметры:
 
Параметры:
* eax = 26 - номер функции
+
:* eax = 26 - номер функции
* ebx = 7 - номер подфункции
+
:* ebx = 9 - номер подфункции
 
Возвращаемое значение:
 
Возвращаемое значение:
* eax = база HD: 1=IDE0, 2=IDE1, 3=IDE2, 4=IDE3
+
:* eax = число сотых долей секунды, прошедших с момента
 +
::запуска системы
 
Замечания:
 
Замечания:
* Любое приложение в любой момент времени может изменить базу.
+
:* Счётчик берётся по модулю 2^32, что соответствует немногим более
* Установить базу можно вызовом подфункции 7 функции 21.
+
::497 суток.
* Получить используемый раздел жёсткого диска можно подфункцией 8.
+
:* Системное время можно получить функцией 3.
  
=== Подфункция 8 - получить раздел HD. ===
+
'''Константы для регистров:'''
 +
::eax - SF_SYSTEM_GET (26)
 +
::ebx - SSF_TIME_COUNT (9)
  
Раздел HD нужен для определения, на какой раздел жёсткого диска писать, при использовании устаревшего синтаксиса /HD в устаревшей функции 58;
+
=== Подфункция 10 - получить значение высокоточного счётчика времени. ===
при использовании современного синтаксиса /HD0,/HD1,/HD2,/HD3 база и раздел устанавливаются автоматически.
 
  
 
Параметры:
 
Параметры:
* eax = 26 - номер функции
+
:* eax = 26 - номер функции
* ebx = 8 - номер подфункции
+
:* ebx = 10 - номер подфункции
 
Возвращаемое значение:
 
Возвращаемое значение:
* eax = раздел HD (считая с 1)
+
:* edx:eax = число наносекунд с момента загрузки ядра
Замечания:
+
:* eax = младшее двойное слово
* Любое приложение в любой момент времени может изменить раздел.
+
:* edx = старшее двойное слово 
* Установить раздел можно вызовом подфункции 8 функции 21.
+
Замечание:
* Узнать число разделов на жёстком диске можно вызовом подфункции 11 функции 18.
+
:* функция использует счётчик HPET, если HPET не доступен используется
* Получить используемую базу жёсткого диска можно подфункцией 7.
+
::счётчик PIT. В этом случае точность будет уменьшена до 10 000 000
 
+
::наносекунд.
=== Подфункция 9 - получить значение счётчика времени. ===
 
  
Параметры:
+
'''Константы для регистров:'''
* eax = 26 - номер функции
+
::eax - SF_SYSTEM_GET (26)
* ebx = 9 - номер подфункции
+
::ebx - SSF_TIME_COUNT_PRO (10)
Возвращаемое значение:
 
* eax = число сотых долей секунды, прошедших с момента запуска системы
 
Замечания:
 
* Счётчик берётся по модулю 2^32, что соответствует немногим более 497 суток.
 
* Системное время можно получить функцией 3.
 
 
 
=== Подфункция 10 - получить канал DMA для звука. ===
 
 
 
Удалена
 
  
 
=== Подфункция 11 - узнать, разрешён ли низкоуровневый доступ к HD. ===
 
=== Подфункция 11 - узнать, разрешён ли низкоуровневый доступ к HD. ===
  
 
Параметры:
 
Параметры:
* eax = 26 - номер функции
+
:* eax = 26 - номер функции
* ebx = 11 - номер подфункции
+
:* ebx = 11 - номер подфункции
 
Возвращаемое значение:
 
Возвращаемое значение:
* eax = 0/1 - запрещён/разрешён
+
:* eax = 0/1 - запрещён/разрешён
 
Замечания:
 
Замечания:
* Используется при LBA-чтении (подфункция 8 функции 58).
+
:* Используется при LBA-чтении (подфункция 8 функции 58).
* Установить текущее состояние можно вызовом подфункции 11 функции 21.
+
:* Установить текущее состояние можно вызовом
 +
::подфункции 11 функции 21.
 +
 
 +
'''Константы для регистров:'''
 +
::eax - SF_SYSTEM_GET (26)
 +
::ebx - SSF_ACCESS_HD_LBA (11)
  
 
=== Подфункция 12 - узнать, разрешён ли низкоуровневый доступ к PCI. ===
 
=== Подфункция 12 - узнать, разрешён ли низкоуровневый доступ к PCI. ===
  
 
Параметры:
 
Параметры:
* eax = 26 - номер функции
+
:* eax = 26 - номер функции
* ebx = 12 - номер подфункции
+
:* ebx = 12 - номер подфункции
 
Возвращаемое значение:
 
Возвращаемое значение:
* eax = 0/1 - запрещён/разрешён
+
:* eax = 0/1 - запрещён/разрешён
 
Замечания:
 
Замечания:
* Используется при работе с шиной PCI (функция 62).
+
:* Используется при работе с шиной PCI (функция 62).
* Текущая реализация использует только младший бит ecx.
+
:* Текущая реализация использует только младший бит ecx.
* Установить текущее состояние можно вызовом подфункции 12 функции 21.
+
:* Установить текущее состояние можно вызовом
 +
::подфункции 12 функции 21.
  
 +
'''Константы для регистров:'''
 +
::eax - SF_SYSTEM_GET (26)
 +
::ebx - SSF_ACCESS_PCI (12)
  
 
{{System_functions}}
 
{{System_functions}}
 
[[Category: SysCalls]]
 
[[Category: SysCalls]]

Latest revision as of 15:34, 12 January 2022

Функция 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)