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

на главную - закладки

Жанры

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

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

Шрифт:

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.75
рейтинг книги
Темный Лекарь 7

Пограничная река. (Тетралогия)

Каменистый Артем
Пограничная река
Фантастика:
фэнтези
боевая фантастика
9.13
рейтинг книги
Пограничная река. (Тетралогия)

70 Рублей - 2. Здравствуй S-T-I-K-S

Кожевников Павел
Вселенная S-T-I-K-S
Фантастика:
боевая фантастика
постапокалипсис
5.00
рейтинг книги
70 Рублей - 2. Здравствуй S-T-I-K-S

Темный Лекарь 4

Токсик Саша
4. Темный Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Темный Лекарь 4

Камень. Книга шестая

Минин Станислав
6. Камень
Фантастика:
боевая фантастика
7.64
рейтинг книги
Камень. Книга шестая

Неверный

Тоцка Тала
Любовные романы:
современные любовные романы
5.50
рейтинг книги
Неверный

Корсар

Русич Антон
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
6.29
рейтинг книги
Корсар

Орден Багровой бури. Книга 6

Ермоленков Алексей
6. Орден Багровой бури
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Орден Багровой бури. Книга 6

Венецианский купец

Распопов Дмитрий Викторович
1. Венецианский купец
Фантастика:
фэнтези
героическая фантастика
альтернативная история
7.31
рейтинг книги
Венецианский купец

Прогрессор поневоле

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

Мастер Разума V

Кронос Александр
5. Мастер Разума
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Мастер Разума V

Клан

Русич Антон
2. Долгий путь домой
Фантастика:
боевая фантастика
космическая фантастика
5.60
рейтинг книги
Клан

Плохая невеста

Шторм Елена
Любовные романы:
любовно-фантастические романы
7.71
рейтинг книги
Плохая невеста

Предопределение

Осадчук Алексей Витальевич
9. Последняя жизнь
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Предопределение