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

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

Жанры

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

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

Шрифт:

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. Камень
Фантастика:
фэнтези
боевая фантастика
6.22
рейтинг книги
Камень Книга седьмая

Барон диктует правила

Ренгач Евгений
4. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон диктует правила

Ты не мой BOY

Рам Янка
5. Самбисты
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Ты не мой BOY

Дворянская кровь

Седой Василий
1. Дворянская кровь
Фантастика:
попаданцы
альтернативная история
7.00
рейтинг книги
Дворянская кровь

Неверный

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

Не грози Дубровскому! Том V

Панарин Антон
5. РОС: Не грози Дубровскому!
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Не грози Дубровскому! Том V

Сердце Дракона. Том 19. Часть 1

Клеванский Кирилл Сергеевич
19. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.52
рейтинг книги
Сердце Дракона. Том 19. Часть 1

Мама для дракончика или Жена к вылуплению

Максонова Мария
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Мама для дракончика или Жена к вылуплению

Ваше Сиятельство 3

Моури Эрли
3. Ваше Сиятельство
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Ваше Сиятельство 3

Снегурка для опера Морозова

Бигси Анна
4. Опасная работа
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Снегурка для опера Морозова

Архил...?

Кожевников Павел
1. Архил...?
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Архил...?

Идеальный мир для Социопата 2

Сапфир Олег
2. Социопат
Фантастика:
боевая фантастика
рпг
6.11
рейтинг книги
Идеальный мир для Социопата 2

Внешняя Зона

Жгулёв Пётр Николаевич
8. Real-Rpg
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Внешняя Зона

Идеальный мир для Лекаря 16

Сапфир Олег
16. Лекарь
Фантастика:
боевая фантастика
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 16