Rev 4641 | Rev 4711 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4641 | Rev 4700 | ||
---|---|---|---|
Line 843... | Line 843... | ||
843 | ====================================================================== |
843 | ====================================================================== |
844 | Параметры: |
844 | Параметры: |
845 | * eax = 18 - номер функции |
845 | * eax = 18 - номер функции |
846 | * ebx = 11 - номер подфункции |
846 | * ebx = 11 - номер подфункции |
847 | * ecx = тип таблицы: |
847 | * ecx = тип таблицы: |
848 | * 1 = короткая версия, 10 байт |
848 | * 1 = короткая версия, 16 байт |
849 | * edx = указатель на буфер (в приложении) для таблицы |
849 | * edx = указатель на буфер (в приложении) для таблицы |
850 | Возвращаемое значение: |
850 | Возвращаемое значение: |
851 | * функция не возвращает значения |
851 | * функция не возвращает значения |
852 | Формат таблицы: короткая версия: |
852 | Формат таблицы: короткая версия: |
853 | * +0: byte: информация о НГМД (дисководах для дискет), AAAABBBB, |
853 | * +0: byte: информация о НГМД (дисководах для дискет), AAAABBBB, |
Line 860... | Line 860... | ||
860 | * 4 = 1.44Mb, 3.5'' |
860 | * 4 = 1.44Mb, 3.5'' |
861 | * 5 = 2.88Mb, 3.5'' (такие дискеты сейчас уже не используются) |
861 | * 5 = 2.88Mb, 3.5'' (такие дискеты сейчас уже не используются) |
862 | Например, для стандартной конфигурации из одного 1.44-дисковода |
862 | Например, для стандартной конфигурации из одного 1.44-дисковода |
863 | здесь будет 40h, а для случая 1.2Mb на A: и 1.44Mb на B: |
863 | здесь будет 40h, а для случая 1.2Mb на A: и 1.44Mb на B: |
864 | значение оказывается 24h. |
864 | значение оказывается 24h. |
- | 865 | ||
- | 866 | Первый контроллер IDE: |
|
865 | * +1: byte: информация о жёстких дисках и CD-приводах, AABBCCDD, |
867 | * +1: byte: информация о жёстких дисках и CD-приводах, AABBCCDD, |
866 | где AA соответствует контроллеру IDE0, ..., DD - IDE3: |
868 | где AA соответствует контроллеру IDE0, ..., DD - IDE3: |
867 | * 0 = устройство отсутствует |
869 | * 0 = устройство отсутствует |
868 | * 1 = жёсткий диск |
870 | * 1 = жёсткий диск |
869 | * 2 = CD-привод |
871 | * 2 = CD-привод |
870 | Например, в случае HD на IDE0 и CD на IDE2 здесь будет 48h. |
872 | Например, в случае HD на IDE0 и CD на IDE2 здесь будет 48h. |
871 | * +2: 4 db: число найденных разделов на жёстких дисках с |
873 | * +2: 4 db: число найденных разделов на жёстких дисках с |
872 | соответственно IDE0,...,IDE3. |
874 | соответственно IDE0,...,IDE3. |
- | 875 | ||
- | 876 | Второй контроллер IDE: |
|
- | 877 | * +6: byte: информация о жёстких дисках и CD-приводах, AABBCCDD |
|
- | 878 | где AA соответствует контроллеру IDE4, ..., DD - IDE7: |
|
- | 879 | * 0 = устройство отсутствует |
|
- | 880 | * 1 = жёсткий диск |
|
- | 881 | * 2 = CD-привод |
|
- | 882 | Например, в случае HD на IDE4 и CD на IDE6 здесь будет 48h. |
|
- | 883 | * +7: 4 db: число найденных разделов на жёстких дисках с |
|
- | 884 | соответственно IDE4,...,IDE7. |
|
- | 885 | ||
- | 886 | Третий контроллер IDE: |
|
- | 887 | * +11: byte: информация о жёстких дисках и CD-приводах, AABBCCDD |
|
- | 888 | где AA соответствует контроллеру IDE8, ..., DD - IDE11: |
|
- | 889 | * 0 = устройство отсутствует |
|
- | 890 | * 1 = жёсткий диск |
|
- | 891 | * 2 = CD-привод |
|
- | 892 | Например, в случае HD на IDE8 и CD на IDE10 здесь будет 48h. |
|
- | 893 | * +12: 4 db: число найденных разделов на жёстких дисках с |
|
- | 894 | соответственно IDE8,...,IDE11. |
|
- | 895 | ||
873 | При отсутствии жёсткого диска на IDEx соответствующий байт |
896 | При отсутствии жёсткого диска на IDEx соответствующий байт |
874 | нулевой, при наличии показывает число распознанных разделов, |
897 | нулевой, при наличии показывает число распознанных разделов, |
875 | которых может и не быть (если носитель не отформатирован или |
898 | которых может и не быть (если носитель не отформатирован или |
876 | если файловая система не поддерживается). В текущей версии ядра |
899 | если файловая система не поддерживается). В текущей версии ядра |
877 | для жёстких дисков поддерживаются только FAT16, FAT32 и NTFS. |
900 | для жёстких дисков поддерживаются только FAT12/16/32, NTFS, |
878 | * +6: 4 db: зарезервировано |
901 | ext2/3/4 и XFS. |
Line 879... | Line 902... | ||
879 | 902 | ||
880 | Замечания: |
903 | Замечания: |
881 | * Короткая таблица может быть использована для получения информации |
904 | * Таблица может быть использована для получения информации |
Line 882... | Line 905... | ||
882 | об имеющихся устройствах. |
905 | об имеющихся устройствах. |
883 | 906 | ||
884 | ====================================================================== |
907 | ====================================================================== |
Line 1192... | Line 1215... | ||
1192 | самим ядром не используется; однако приложение @panel отображает |
1215 | самим ядром не используется; однако приложение @panel отображает |
1193 | соответствующую текущей стране иконку. |
1216 | соответствующую текущей стране иконку. |
1194 | * Приложение @panel переключает раскладки по запросу пользователя. |
1217 | * Приложение @panel переключает раскладки по запросу пользователя. |
Line 1195... | Line 1218... | ||
1195 | 1218 | ||
1196 | ====================================================================== |
- | |
1197 | =========== Функция 21, подфункция 3 - установить базу CD. =========== |
- | |
1198 | ====================================================================== |
- | |
1199 | Параметры: |
- | |
1200 | * eax = 21 - номер функции |
- | |
1201 | * ebx = 3 - номер подфункции |
- | |
1202 | * ecx = база CD: 1=IDE0, 2=IDE1, 3=IDE2, 4=IDE3 |
- | |
1203 | Возвращаемое значение: |
- | |
1204 | * eax = 0 |
- | |
1205 | Замечания: |
- | |
1206 | * База CD используется функцией 24. |
- | |
1207 | * Получить установленную базу CD можно вызовом |
- | |
1208 | подфункции 3 функции 26. |
- | |
1209 | - | ||
1210 | ====================================================================== |
1219 | ====================================================================== |
1211 | ========= Функция 21, подфункция 5 - установить язык системы. ======== |
1220 | ========= Функция 21, подфункция 5 - установить язык системы. ======== |
1212 | ====================================================================== |
1221 | ====================================================================== |
1213 | Параметры: |
1222 | Параметры: |
1214 | * eax = 21 - номер функции |
1223 | * eax = 21 - номер функции |
Line 1253... | Line 1262... | ||
1253 | * Используется при работе с шиной PCI (функция 62). |
1262 | * Используется при работе с шиной PCI (функция 62). |
1254 | * Текущая реализация использует только младший бит ecx. |
1263 | * Текущая реализация использует только младший бит ecx. |
1255 | * Получить текущее состояние можно вызовом подфункции 12 функции 26. |
1264 | * Получить текущее состояние можно вызовом подфункции 12 функции 26. |
Line 1256... | Line 1265... | ||
1256 | 1265 | ||
1257 | ====================================================================== |
- | |
1258 | ============= Функция 21, подфункция 13, подподфункция 1 ============= |
- | |
1259 | ==== Инициализировать + получить информацию о драйвере vmode.mdr. ==== |
- | |
1260 | ====================================================================== |
- | |
1261 | Параметры: |
- | |
1262 | * eax = 21 - номер функции |
- | |
1263 | * ebx = 13 - номер подфункции |
- | |
1264 | * ecx = 1 - номер функции драйвера |
- | |
1265 | * edx = указатель на буфер размера 512 байт |
- | |
1266 | Возвращаемое значение: |
- | |
1267 | * если драйвер не загружен (никогда не бывает в текущей реализации): |
- | |
1268 | * eax = -1 |
- | |
1269 | * ebx, ecx разрушаются |
- | |
1270 | * если драйвер загружен: |
- | |
1271 | * eax = 'MDAZ' (в стиле fasm'а, т.е. 'M' - младший байт, |
- | |
1272 | 'Z' - старший) - сигнатура |
- | |
1273 | * ebx = текущая частота развёртки (в Гц) |
- | |
1274 | * ecx разрушается |
- | |
1275 | * буфер, на который указывает edx, заполнен |
- | |
1276 | Формат буфера: |
- | |
1277 | * +0: 32*byte: имя драйвера, "Trans VideoDriver" (без кавычек, |
- | |
1278 | дополнено пробелами) |
- | |
1279 | * +32 = +0x20: dword: версия драйвера (версия x.y кодируется как |
- | |
1280 | y*65536+x), для текущей реализации 1 (1.0) |
- | |
1281 | * +36 = +0x24: 7*dword: зарезервировано (0 в текущей реализации) |
- | |
1282 | * +64 = +0x40: 32*word: список поддерживаемых видеорежимов (каждое |
- | |
1283 | слово - номер видеорежима, после собственно списка идут нули) |
- | |
1284 | * +128 = +0x80: 32*(5*word): список поддерживаемых частот развёрток |
- | |
1285 | для видеорежимов: для каждого видеорежима, указанного в предыдущем |
- | |
1286 | поле, указано до 5 поддерживаемых частот |
- | |
1287 | (в неиспользуемых позициях записаны нули) |
- | |
1288 | Замечания: |
- | |
1289 | * Функция инициализирует драйвер (если он ещё не инициализирован) |
- | |
1290 | и должна вызываться первой, перед остальными (иначе они будут |
- | |
1291 | возвращать -1, ничего не делая). |
- | |
1292 | * В текущей реализации поддерживается только одна частота развёртки |
- | |
1293 | на видеорежим. |
- | |
1294 | - | ||
1295 | ====================================================================== |
- | |
1296 | ============= Функция 21, подфункция 13, подподфункция 2 ============= |
- | |
1297 | ============= Получить информацию о текущем видеорежиме. ============= |
- | |
1298 | ====================================================================== |
- | |
1299 | Параметры: |
- | |
1300 | * eax = 21 - номер функции |
- | |
1301 | * ebx = 13 - номер подфункции |
- | |
1302 | * ecx = 2 - номер функции драйвера |
- | |
1303 | Возвращаемое значение: |
- | |
1304 | * eax = -1 - драйвер не загружен или не инициализирован; |
- | |
1305 | ebx,ecx разрушаются |
- | |
1306 | * eax = [ширина]*65536 + [высота] |
- | |
1307 | * ebx = частота вертикальной развёртки (в Гц) |
- | |
1308 | * ecx = номер текущего видеорежима |
- | |
1309 | Замечания: |
- | |
1310 | * Драйвер предварительно должен быть инициализирован вызовом |
- | |
1311 | функции драйвера 1. |
- | |
1312 | * Если нужны только размеры экрана, целесообразней использовать |
- | |
1313 | функцию 14 с учётом того, что она возвращает размеры на 1 меньше. |
- | |
1314 | - | ||
1315 | ====================================================================== |
- | |
1316 | = Функция 21, подфункция 13, подподфункция 3 - установить видеорежим. |
- | |
1317 | ====================================================================== |
- | |
1318 | Параметры: |
- | |
1319 | * eax = 21 - номер функции |
- | |
1320 | * ebx = 13 - номер подфункции |
- | |
1321 | * ecx = 3 - номер функции драйвера |
- | |
1322 | * edx = [частота развёртки]*65536 + [номер видеорежима] |
- | |
1323 | Возвращаемое значение: |
- | |
1324 | * eax = -1 - драйвер не загружен, не инициализирован или |
- | |
1325 | произошла ошибка |
- | |
1326 | * eax = 0 - успешно |
- | |
1327 | * ebx, ecx разрушаются |
- | |
1328 | Замечания: |
- | |
1329 | * Драйвер предварительно должен быть инициализирован вызовом |
- | |
1330 | функции драйвера 1. |
- | |
1331 | * Номер видеорежима и частота должны быть в таблице, возвращаемой |
- | |
1332 | функцией драйвера 1. |
- | |
1333 | - | ||
1334 | ====================================================================== |
- | |
1335 | ============= Функция 21, подфункция 13, подподфункция 4 ============= |
- | |
1336 | ================= Вернуться к начальному видеорежиму. ================ |
- | |
1337 | ====================================================================== |
- | |
1338 | Возвращает экран в видеорежим, установленный при загрузке системы. |
- | |
1339 | Параметры: |
- | |
1340 | * eax = 21 - номер функции |
- | |
1341 | * ebx = 13 - номер подфункции |
- | |
1342 | * ecx = 4 - номер функции драйвера |
- | |
1343 | Возвращаемое значение: |
- | |
1344 | * eax = -1 - драйвер не загружен или не инициализирован |
- | |
1345 | * eax = 0 - успешно |
- | |
1346 | * ebx, ecx разрушаются |
- | |
1347 | Замечания: |
- | |
1348 | * Драйвер предварительно должен быть инициализирован вызовом |
- | |
1349 | функции драйвера 1. |
- | |
1350 | - | ||
1351 | ====================================================================== |
- | |
1352 | ============= Функция 21, подфункция 13, подподфункция 5 ============= |
- | |
1353 | ======== Увеличить/уменьшить размер видимой области монитора. ======== |
- | |
1354 | ====================================================================== |
- | |
1355 | Параметры: |
- | |
1356 | * eax = 21 - номер функции |
- | |
1357 | * ebx = 13 - номер подфункции |
- | |
1358 | * ecx = 5 - номер функции драйвера |
- | |
1359 | * edx = 0/1 - уменьшить/увеличить размер по горизонтали |
- | |
1360 | на одну позицию |
- | |
1361 | * edx = 2/3 - в текущей реализации не поддерживается; планируется |
- | |
1362 | как уменьшение/увеличение размера по вертикали на одну позицию |
- | |
1363 | Возвращаемое значение: |
- | |
1364 | * eax = -1 - драйвер не загружен или не инициализирован |
- | |
1365 | * eax = 0 - успешно |
- | |
1366 | * ebx, ecx разрушаются |
- | |
1367 | Замечания: |
- | |
1368 | * Драйвер предварительно должен быть инициализирован вызовом |
- | |
1369 | функции драйвера 1. |
- | |
1370 | * Функция влияет только на физический размер изображения |
- | |
1371 | на мониторе; логический размер (число пикселей) не меняется. |
- | |
1372 | - | ||
1373 | ====================================================================== |
1266 | ====================================================================== |
1374 | ============ Функция 22 - установить системную дату/время. =========== |
1267 | ============ Функция 22 - установить системную дату/время. =========== |
1375 | ====================================================================== |
1268 | ====================================================================== |
1376 | Параметры: |
1269 | Параметры: |
1377 | * eax = 22 - номер функции |
1270 | * eax = 22 - номер функции |
Line 1431... | Line 1324... | ||
1431 | * При текущей реализации произойдёт немедленный возврат из функции |
1324 | * При текущей реализации произойдёт немедленный возврат из функции |
1432 | с eax=0, если сложение ebx с текущим значением счётчика времени |
1325 | с eax=0, если сложение ebx с текущим значением счётчика времени |
1433 | вызовет 32-битное переполнение. |
1326 | вызовет 32-битное переполнение. |
Line 1434... | Line 1327... | ||
1434 | 1327 | ||
1435 | ====================================================================== |
- | |
1436 | ======= Функция 24, подфункция 1 - начать проигрывать CD-audio. ====== |
- | |
1437 | ====================================================================== |
- | |
1438 | Параметры: |
- | |
1439 | * eax = 24 - номер функции |
- | |
1440 | * ebx = 1 - номер подфункции |
- | |
1441 | * ecx = 0x00FRSSMM, где |
- | |
1442 | * MM = начальная минута |
- | |
1443 | * SS = начальная секунда |
- | |
1444 | * FR = начальный фрейм |
- | |
1445 | Возвращаемое значение: |
- | |
1446 | * eax = 0 - успешно |
- | |
1447 | * eax = 1 - не определена база CD |
- | |
1448 | Замечания: |
- | |
1449 | * Предварительно нужно определить базовый порт CD вызовом |
- | |
1450 | подфункции 3 функции 21. |
- | |
1451 | * В секунде 75 фреймов, в минуте 60 секунд. |
- | |
1452 | * Функция асинхронна (возвращает управление, когда началось |
- | |
1453 | проигрывание). |
- | |
1454 | - | ||
1455 | ====================================================================== |
- | |
1456 | ===== Функция 24, подфункция 2 - получить информацию о дорожках. ===== |
- | |
1457 | ====================================================================== |
- | |
1458 | Параметры: |
- | |
1459 | * eax = 24 - номер функции |
- | |
1460 | * ebx = 2 - номер подфункции |
- | |
1461 | * ecx = указатель на буфер для таблицы |
- | |
1462 | (максимум 8*64h+4 байт=100 дорожек) |
- | |
1463 | Возвращаемое значение: |
- | |
1464 | * eax = 0 - успешно |
- | |
1465 | * eax = 1 - не определена база CD |
- | |
1466 | Замечания: |
- | |
1467 | * Формат таблицы с информацией о дорожках такой же, как и для |
- | |
1468 | ATAPI-CD команды 43h (READ TOC), обычной таблицы (подкоманда 00h). |
- | |
1469 | Адреса возвращаются в формате MSF. |
- | |
1470 | * Предварительно нужно определить базовый порт CD вызовом |
- | |
1471 | подфункции 3 функции 21. |
- | |
1472 | * Функция возвращает информацию только о не более чем 100 |
- | |
1473 | первых дорожках. В большинстве случаев этого достаточно. |
- | |
1474 | - | ||
1475 | ====================================================================== |
- | |
1476 | ==== Функция 24, подфункция 3 - остановить проигрываемое CD-audio. === |
- | |
1477 | ====================================================================== |
- | |
1478 | Параметры: |
- | |
1479 | * eax = 24 - номер функции |
- | |
1480 | * ebx = 1 - номер подфункции |
- | |
1481 | Возвращаемое значение: |
- | |
1482 | * eax = 0 - успешно |
- | |
1483 | * eax = 1 - не определена база CD |
- | |
1484 | Замечания: |
- | |
1485 | * Предварительно нужно определить базовый порт CD вызовом |
- | |
1486 | подфункции 3 функции 21. |
- | |
1487 | - | ||
1488 | ====================================================================== |
1328 | ====================================================================== |
1489 | ======= Функция 24, подфункция 4 - извлечь лоток привода диска. ====== |
1329 | ======= Функция 24, подфункция 4 - извлечь лоток привода диска. ====== |
1490 | ====================================================================== |
1330 | ====================================================================== |
1491 | Параметры: |
1331 | Параметры: |
1492 | * eax = 24 - номер функции |
1332 | * eax = 24 - номер функции |
Line 1586... | Line 1426... | ||
1586 | соответствующую текущей стране иконку |
1426 | соответствующую текущей стране иконку |
1587 | (используя описываемую функцию). |
1427 | (используя описываемую функцию). |
1588 | * Приложение @panel переключает раскладки по запросу пользователя. |
1428 | * Приложение @panel переключает раскладки по запросу пользователя. |
Line 1589... | Line 1429... | ||
1589 | 1429 | ||
1590 | ====================================================================== |
- | |
1591 | ============ Функция 26, подфункция 3 - получить базу CD. ============ |
- | |
1592 | ====================================================================== |
- | |
1593 | Параметры: |
- | |
1594 | * eax = 26 - номер функции |
- | |
1595 | * ebx = 3 - номер подфункции |
- | |
1596 | Возвращаемое значение: |
- | |
1597 | * eax = база CD: 1=IDE0, 2=IDE1, 3=IDE2, 4=IDE3 |
- | |
1598 | Замечания: |
- | |
1599 | * База CD используется функцией 24. |
- | |
1600 | * Установить базу CD можно вызовом подфункции 3 функции 21. |
- | |
1601 | - | ||
1602 | ====================================================================== |
1430 | ====================================================================== |
1603 | ========== Функция 26, подфункция 5 - получить язык системы. ========= |
1431 | ========== Функция 26, подфункция 5 - получить язык системы. ========= |
1604 | ====================================================================== |
1432 | ====================================================================== |
1605 | Параметры: |
1433 | Параметры: |
1606 | * eax = 26 - номер функции |
1434 | * eax = 26 - номер функции |