Чтение онлайн

на главную

Жанры

Аппаратные интерфейсы ПК. Энциклопедия

Гук Михаил Юрьевич

Шрифт:

12.8.6. Int 1Ah и Int 15h — поддержка таймеров

Сервисы BIOS

Int 1Ah
позволяют считывать и модифицировать значения системного таймера, даты и времени, а также установки будильника часов реального времени CMOS RTC. Перечисленные ниже номера функций указываются при вызове в регистре
АН
.

1. 

АН
=0 — чтение системного таймера (двойного слова по адресу 40:006Eh в BIOS Data Area, инкрементируемого по прерываниям от канала 0 счетчика- таймера 8253/8254 примерно раз в 55 мс. Таймер обнуляется при выполнении теста POST после аппаратного сброса). Возвращает значение таймера, в
СХ
 —
старшую часть, в
DX
— младшую.
AL
=0, если за последние 24 часа не было переполнения таймера. В современных версиях сброс
AL
возвращает счетчик переполнений таймера, хранящийся в ячейке 40:0070h (в старых версиях это был флаг).

2. 

АН
=1 — установка системного таймера (
СХ
— старшая часть, в
DX
— младшая) и сброс флага (счетчика) переполнения таймера в ячейке 40:0070h. В случае ошибки устанавливается флаг
CF
=1.

3. 

АН
=2 — чтение времени из RTC. Возвращает в упакованном BCD-формате час (в регистре
СН
), минуту (
CL
), секунду (
DH
) и признак коррекции летнего/зимнего времени (
DL
=1 — коррекция используется,
DL
=0 — нет). Признаком успешной операции является флаг
CF
=0. Во избежание ошибок некоторых BIOS при вызове флаг
CF
должен быть сброшен.

4. 

АН
=3 — установка времени в RTC, назначение регистров и признак результата аналогичен функции 2.

5. 

АН
=4 — чтение даты из RTC. Возвращает в упакованном BCD-формате век (в регистре
СН
), две старшие цифры года (
CL
), месяц (
DH
) и день (
DL
). Признаком успешной операции является флаг
CF
=0. Во избежание ошибок некоторых BIOS при вызове флаг
CF
должен быть сброшен.

6. 

АН
=5 — установка даты в RTC, назначение регистров и признак результата аналогичен функции 4.

7. 

АН
=6 — установка времени срабатывания будильника RTC. Возвращает в упакованном BCD-формате час (в регистре
СН
), минуту (
CL
) и секунду (
DH
). Если будильник уже установлен, переустановка не производится и возвращается флаг
CF
=1. При срабатывании будильник вызывает прерывание
Int 4Ah
.

8. 

АН
=7 — отмена установки будильника.

Функции BIOS

Int 15h
позволяют программировать таймер CMOS RTC — вводить задержку или запускать таймер установки флага, указывая время в микросекундах (СХ — старшее слово, DX — младшее). Нулевое значение интервала не вызывает никаких действий. Достижимое разрешение в зависимости от производительности ПК может достигать единиц миллисекунд, максимальная выдержка — около 70 часов. Перечисленные ниже номера функций указываются при вызове в регистре
АН
или
АХ
.

9. 

AH
=86h — задержка на заданное время. Управление будет возвращено вызвавшему процессу только через указанный интервал. По окончании задержки будет установлен бит 7 в ячейке BDA 0040:00A0. Таймер может оказаться занятым, тогда вызов сразу возвратит флаг
CF
=1 (при успехе
CF
=0, а в
AL
окажется маска, записанная в 8259А#2).

10. 

AX
=8300h — запуск таймера, устанавливающего флаг после указанной задержке бит 7 в ячейке, заданной регистрами
ES
:
BX
. При успешном запуске
CF
=0; если таймер занят (он один) —
CF
=1 и
AL
=0. Управление возвращается процессу сразу, а флаг будет установлен через заданное время. Перед завершением программа,
запускавшая таймер, должна его сбросить функцией 8301h (во-первых, чтобы освободить; во-вторых, чтобы снять «адскую машинку», которая неожиданно сама может изменить значение ячейки памяти, вполне возможно уже задействованную другим, ничего не «подозревающим» процессом).

11. 

AX
=8301h — сброс того же таймера.

12.8.7. PCI BIOS

Функции PCI BIOS используются только для поиска и конфигурирования устройств PCI — процедур, требующих доступа к их конфигурационному пространству (см. п. 8.2). Регулярная работа с этими устройствами выполняется через обращения к регистрам устройств по адресам, полученным при конфигурировании, и обработке известных номеров прерываний от этих устройств. Для 16-битного интерфейса реального режима, V86 и 16-битного реального режима, функции PCI BIOS вызываются через прерывание

Int 1Ah
; номер функции задается при вызове в регистре
АХ
. Возможна и программная имитация прерывания дальним вызовом по физическому адресу 000FFE6EH (стандартная точка входа в обработчик
Int 1Ah
) с предварительным занесением в стек регистра флагов.

Признаком нормального выполнения является

CF
=0 и
АН
=0; при
CF
=1
АН
содержит код ошибки:

♦ 81h — неподдерживаемая функция;

♦ 83h — неправильный идентификатор производителя;

♦ 86h — устройство не найдено;

♦ 87h — неправильный номер регистра PCI.

Вызовы требуют глубокого стека (до 1024 байт). Для 32-разрядных вызовов защищенного режима все эти же функции вызываются через точку входа, найденную через каталог 32-разрядных сервисов (см. выше), при этом назначение входных и выходных регистров и флага

CF
сохраняется. До использования 32-разрядного интерфейса следует сначала найти его каталог и убедиться в наличии сервисов PCI. Функции PCI BIOS перечислены ниже:

♦ 

АХ
= B101h — проверка присутствия PCI BIOS. При наличии PCI BIOS возвращает
CF
=0,
АН
=0 и
EDX
=20494350h (строка символов "PCI "); проверяться должны все три признака. При этом в
AL
находится описатель аппаратного механизма доступа к конфигурационному пространству и генерации специальных циклов PCI:

 • Бит 0 — поддержка механизма № 1 для доступа к конфигурационному пространству;

 • Бит 1 — поддержка механизма № 2 для доступа к конфигурационному пространству;

 • Биты 2:3=00 (резерв);

 • Бит 4 — поддержка генерации специального цикла по механизму № 1;

 • Бит 5 — поддержка генерации специального цикла по механизму № 2;

 • Биты 6:7=00 (резерв).

В регистрах

ВН
и
BL
возвращается старший и младший номер версии (BCD-цифры), в
CL
— максимальный номер шины PCI, присутствующий в системе (число шин +1, поскольку они нумеруются с нуля последовательно). В регистре
EDI
может возвращаться линейный адрес точки входа 32-разрядных сервисов BIOS. Этот адрес возвращается не всеми версиями BIOS (некоторые не изменяют
EDI
); для проверки можно при вызове обнулять
EDI
и проверять на нуль возвращенное значение.

♦ 

АХ
= B102h — поиск устройства по идентификатору. При вызове в
СХ
указывается идентификатор устройства, в
DX
— идентификатор производителя, в
SI
— индекс (порядковый номер) устройства. При успешном возврате в
ВН
— номер шины, в
BL[7:3]
— номер устройства,
BL[2:0]
— номер функции. Для нахождения всех устройств с указанными идентификаторами вызовы выполняют, последовательно инкрементируя
SI
от 0 до получения кода возврата 86h.

Поделиться:
Популярные книги

Эволюционер из трущоб. Том 7

Панарин Антон
7. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 7

Девочка для Генерала. Книга первая

Кистяева Марина
1. Любовь сильных мира сего
Любовные романы:
остросюжетные любовные романы
эро литература
4.67
рейтинг книги
Девочка для Генерала. Книга первая

Темный Патриарх Светлого Рода

Лисицин Евгений
1. Темный Патриарх Светлого Рода
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Темный Патриарх Светлого Рода

Цусима — знамение конца русской истории. Скрываемые причины общеизвестных событий. Военно-историческое расследование. Том II

Галенин Борис Глебович
Научно-образовательная:
военная история
5.00
рейтинг книги
Цусима — знамение конца русской истории. Скрываемые причины общеизвестных событий. Военно-историческое расследование. Том II

Бракованная невеста. Академия драконов

Милославская Анастасия
Фантастика:
фэнтези
сказочная фантастика
5.00
рейтинг книги
Бракованная невеста. Академия драконов

Новый Рал 10

Северный Лис
10. Рал!
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Новый Рал 10

Бестужев. Служба Государевой Безопасности. Книга четвертая

Измайлов Сергей
4. Граф Бестужев
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бестужев. Служба Государевой Безопасности. Книга четвертая

Кодекс Крови. Книга Х

Борзых М.
10. РОС: Кодекс Крови
Фантастика:
фэнтези
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга Х

Вперед в прошлое 2

Ратманов Денис
2. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 2

Боевой маг. Трилогия

Бадей Сергей
114. В одном томе
Фантастика:
фэнтези
9.27
рейтинг книги
Боевой маг. Трилогия

Сердце для стража

Каменистый Артем
5. Девятый
Фантастика:
фэнтези
боевая фантастика
9.20
рейтинг книги
Сердце для стража

Тайны затерянных звезд. Том 1

Лекс Эл
1. Тайны затерянных звезд
Фантастика:
боевая фантастика
космическая фантастика
фэнтези
5.00
рейтинг книги
Тайны затерянных звезд. Том 1

Седьмая жена короля

Шёпот Светлана
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Седьмая жена короля

Плохой парень, Купидон и я

Уильямс Хасти
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Плохой парень, Купидон и я