Книга: Аппаратные интерфейсы ПК. Энциклопедия
12.8.6. Int 1Ah и Int 15h — поддержка таймеров
12.8.6. Int 1Ah и Int 15h — поддержка таймеров
Сервисы BIOSInt 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 — отмена установки будильника.
Функции BIOSInt 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 — сброс того же таймера.
- Запуск InterBase-сервера
- Расширенная установка InterBase-сервера
- Резервное копирование базы данных InterBase
- Резервное копирование при работе InterBase в режиме 24x7
- Миграция между различными версиями InterBase
- Перевод базы данных InterBase 6.x на 3-й диалект
- Профилактика повреждений баз данных InterBase
- Восстановление "безнадежных" баз данных. InterBase Surgeon
- Статистика базы данных InterBase
- Sweep interval
- Статистика InterBase-сервера
- Выбор аппаратного обеспечения для InterBase