845,7 → 845,7 |
* eax = 18 - номер функции |
* ebx = 11 - номер подфункции |
* ecx = тип таблицы: |
* 1 = короткая версия, 10 байт |
* 1 = короткая версия, 16 байт |
* edx = указатель на буфер (в приложении) для таблицы |
Возвращаемое значение: |
* функция не возвращает значения |
862,6 → 862,8 |
Например, для стандартной конфигурации из одного 1.44-дисковода |
здесь будет 40h, а для случая 1.2Mb на A: и 1.44Mb на B: |
значение оказывается 24h. |
|
Первый контроллер IDE: |
* +1: byte: информация о жёстких дисках и CD-приводах, AABBCCDD, |
где AA соответствует контроллеру IDE0, ..., DD - IDE3: |
* 0 = устройство отсутствует |
870,15 → 872,36 |
Например, в случае HD на IDE0 и CD на IDE2 здесь будет 48h. |
* +2: 4 db: число найденных разделов на жёстких дисках с |
соответственно IDE0,...,IDE3. |
|
Второй контроллер IDE: |
* +6: byte: информация о жёстких дисках и CD-приводах, AABBCCDD |
где AA соответствует контроллеру IDE4, ..., DD - IDE7: |
* 0 = устройство отсутствует |
* 1 = жёсткий диск |
* 2 = CD-привод |
Например, в случае HD на IDE4 и CD на IDE6 здесь будет 48h. |
* +7: 4 db: число найденных разделов на жёстких дисках с |
соответственно IDE4,...,IDE7. |
|
Третий контроллер IDE: |
* +11: byte: информация о жёстких дисках и CD-приводах, AABBCCDD |
где AA соответствует контроллеру IDE8, ..., DD - IDE11: |
* 0 = устройство отсутствует |
* 1 = жёсткий диск |
* 2 = CD-привод |
Например, в случае HD на IDE8 и CD на IDE10 здесь будет 48h. |
* +12: 4 db: число найденных разделов на жёстких дисках с |
соответственно IDE8,...,IDE11. |
|
При отсутствии жёсткого диска на IDEx соответствующий байт |
нулевой, при наличии показывает число распознанных разделов, |
которых может и не быть (если носитель не отформатирован или |
если файловая система не поддерживается). В текущей версии ядра |
для жёстких дисков поддерживаются только FAT16, FAT32 и NTFS. |
* +6: 4 db: зарезервировано |
для жёстких дисков поддерживаются только FAT12/16/32, NTFS, |
ext2/3/4 и XFS. |
|
Замечания: |
* Короткая таблица может быть использована для получения информации |
* Таблица может быть использована для получения информации |
об имеющихся устройствах. |
|
====================================================================== |
1194,20 → 1217,6 |
* Приложение @panel переключает раскладки по запросу пользователя. |
|
====================================================================== |
=========== Функция 21, подфункция 3 - установить базу CD. =========== |
====================================================================== |
Параметры: |
* eax = 21 - номер функции |
* ebx = 3 - номер подфункции |
* ecx = база CD: 1=IDE0, 2=IDE1, 3=IDE2, 4=IDE3 |
Возвращаемое значение: |
* eax = 0 |
Замечания: |
* База CD используется функцией 24. |
* Получить установленную базу CD можно вызовом |
подфункции 3 функции 26. |
|
====================================================================== |
========= Функция 21, подфункция 5 - установить язык системы. ======== |
====================================================================== |
Параметры: |
1255,122 → 1264,6 |
* Получить текущее состояние можно вызовом подфункции 12 функции 26. |
|
====================================================================== |
============= Функция 21, подфункция 13, подподфункция 1 ============= |
==== Инициализировать + получить информацию о драйвере vmode.mdr. ==== |
====================================================================== |
Параметры: |
* eax = 21 - номер функции |
* ebx = 13 - номер подфункции |
* ecx = 1 - номер функции драйвера |
* edx = указатель на буфер размера 512 байт |
Возвращаемое значение: |
* если драйвер не загружен (никогда не бывает в текущей реализации): |
* eax = -1 |
* ebx, ecx разрушаются |
* если драйвер загружен: |
* eax = 'MDAZ' (в стиле fasm'а, т.е. 'M' - младший байт, |
'Z' - старший) - сигнатура |
* ebx = текущая частота развёртки (в Гц) |
* ecx разрушается |
* буфер, на который указывает edx, заполнен |
Формат буфера: |
* +0: 32*byte: имя драйвера, "Trans VideoDriver" (без кавычек, |
дополнено пробелами) |
* +32 = +0x20: dword: версия драйвера (версия x.y кодируется как |
y*65536+x), для текущей реализации 1 (1.0) |
* +36 = +0x24: 7*dword: зарезервировано (0 в текущей реализации) |
* +64 = +0x40: 32*word: список поддерживаемых видеорежимов (каждое |
слово - номер видеорежима, после собственно списка идут нули) |
* +128 = +0x80: 32*(5*word): список поддерживаемых частот развёрток |
для видеорежимов: для каждого видеорежима, указанного в предыдущем |
поле, указано до 5 поддерживаемых частот |
(в неиспользуемых позициях записаны нули) |
Замечания: |
* Функция инициализирует драйвер (если он ещё не инициализирован) |
и должна вызываться первой, перед остальными (иначе они будут |
возвращать -1, ничего не делая). |
* В текущей реализации поддерживается только одна частота развёртки |
на видеорежим. |
|
====================================================================== |
============= Функция 21, подфункция 13, подподфункция 2 ============= |
============= Получить информацию о текущем видеорежиме. ============= |
====================================================================== |
Параметры: |
* eax = 21 - номер функции |
* ebx = 13 - номер подфункции |
* ecx = 2 - номер функции драйвера |
Возвращаемое значение: |
* eax = -1 - драйвер не загружен или не инициализирован; |
ebx,ecx разрушаются |
* eax = [ширина]*65536 + [высота] |
* ebx = частота вертикальной развёртки (в Гц) |
* ecx = номер текущего видеорежима |
Замечания: |
* Драйвер предварительно должен быть инициализирован вызовом |
функции драйвера 1. |
* Если нужны только размеры экрана, целесообразней использовать |
функцию 14 с учётом того, что она возвращает размеры на 1 меньше. |
|
====================================================================== |
= Функция 21, подфункция 13, подподфункция 3 - установить видеорежим. |
====================================================================== |
Параметры: |
* eax = 21 - номер функции |
* ebx = 13 - номер подфункции |
* ecx = 3 - номер функции драйвера |
* edx = [частота развёртки]*65536 + [номер видеорежима] |
Возвращаемое значение: |
* eax = -1 - драйвер не загружен, не инициализирован или |
произошла ошибка |
* eax = 0 - успешно |
* ebx, ecx разрушаются |
Замечания: |
* Драйвер предварительно должен быть инициализирован вызовом |
функции драйвера 1. |
* Номер видеорежима и частота должны быть в таблице, возвращаемой |
функцией драйвера 1. |
|
====================================================================== |
============= Функция 21, подфункция 13, подподфункция 4 ============= |
================= Вернуться к начальному видеорежиму. ================ |
====================================================================== |
Возвращает экран в видеорежим, установленный при загрузке системы. |
Параметры: |
* eax = 21 - номер функции |
* ebx = 13 - номер подфункции |
* ecx = 4 - номер функции драйвера |
Возвращаемое значение: |
* eax = -1 - драйвер не загружен или не инициализирован |
* eax = 0 - успешно |
* ebx, ecx разрушаются |
Замечания: |
* Драйвер предварительно должен быть инициализирован вызовом |
функции драйвера 1. |
|
====================================================================== |
============= Функция 21, подфункция 13, подподфункция 5 ============= |
======== Увеличить/уменьшить размер видимой области монитора. ======== |
====================================================================== |
Параметры: |
* eax = 21 - номер функции |
* ebx = 13 - номер подфункции |
* ecx = 5 - номер функции драйвера |
* edx = 0/1 - уменьшить/увеличить размер по горизонтали |
на одну позицию |
* edx = 2/3 - в текущей реализации не поддерживается; планируется |
как уменьшение/увеличение размера по вертикали на одну позицию |
Возвращаемое значение: |
* eax = -1 - драйвер не загружен или не инициализирован |
* eax = 0 - успешно |
* ebx, ecx разрушаются |
Замечания: |
* Драйвер предварительно должен быть инициализирован вызовом |
функции драйвера 1. |
* Функция влияет только на физический размер изображения |
на мониторе; логический размер (число пикселей) не меняется. |
|
====================================================================== |
============ Функция 22 - установить системную дату/время. =========== |
====================================================================== |
Параметры: |
1433,59 → 1326,6 |
вызовет 32-битное переполнение. |
|
====================================================================== |
======= Функция 24, подфункция 1 - начать проигрывать CD-audio. ====== |
====================================================================== |
Параметры: |
* eax = 24 - номер функции |
* ebx = 1 - номер подфункции |
* ecx = 0x00FRSSMM, где |
* MM = начальная минута |
* SS = начальная секунда |
* FR = начальный фрейм |
Возвращаемое значение: |
* eax = 0 - успешно |
* eax = 1 - не определена база CD |
Замечания: |
* Предварительно нужно определить базовый порт CD вызовом |
подфункции 3 функции 21. |
* В секунде 75 фреймов, в минуте 60 секунд. |
* Функция асинхронна (возвращает управление, когда началось |
проигрывание). |
|
====================================================================== |
===== Функция 24, подфункция 2 - получить информацию о дорожках. ===== |
====================================================================== |
Параметры: |
* eax = 24 - номер функции |
* ebx = 2 - номер подфункции |
* ecx = указатель на буфер для таблицы |
(максимум 8*64h+4 байт=100 дорожек) |
Возвращаемое значение: |
* eax = 0 - успешно |
* eax = 1 - не определена база CD |
Замечания: |
* Формат таблицы с информацией о дорожках такой же, как и для |
ATAPI-CD команды 43h (READ TOC), обычной таблицы (подкоманда 00h). |
Адреса возвращаются в формате MSF. |
* Предварительно нужно определить базовый порт CD вызовом |
подфункции 3 функции 21. |
* Функция возвращает информацию только о не более чем 100 |
первых дорожках. В большинстве случаев этого достаточно. |
|
====================================================================== |
==== Функция 24, подфункция 3 - остановить проигрываемое CD-audio. === |
====================================================================== |
Параметры: |
* eax = 24 - номер функции |
* ebx = 1 - номер подфункции |
Возвращаемое значение: |
* eax = 0 - успешно |
* eax = 1 - не определена база CD |
Замечания: |
* Предварительно нужно определить базовый порт CD вызовом |
подфункции 3 функции 21. |
|
====================================================================== |
======= Функция 24, подфункция 4 - извлечь лоток привода диска. ====== |
====================================================================== |
Параметры: |
1588,18 → 1428,6 |
* Приложение @panel переключает раскладки по запросу пользователя. |
|
====================================================================== |
============ Функция 26, подфункция 3 - получить базу CD. ============ |
====================================================================== |
Параметры: |
* eax = 26 - номер функции |
* ebx = 3 - номер подфункции |
Возвращаемое значение: |
* eax = база CD: 1=IDE0, 2=IDE1, 3=IDE2, 4=IDE3 |
Замечания: |
* База CD используется функцией 24. |
* Установить базу CD можно вызовом подфункции 3 функции 21. |
|
====================================================================== |
========== Функция 26, подфункция 5 - получить язык системы. ========= |
====================================================================== |
Параметры: |