Subversion Repositories Kolibri OS

Rev

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 - номер функции