В процессе начального тестирования POST BIOS проверяет наличие последовательных портов (регистров UART 8250 или совместимых) по стандартным адресам и помещает базовые адреса обнаруженных портов в ячейки BIOS Data Area
COM1
-СОМ4
. Нулевое значение адреса является признаком отсутствия порта с данным номером. В ячейки 0:047С, 047D, 047Е, 047F заносятся константы, задающие тайм-аут для портов.Обнаруженные порты
DTR
и RTS
переводятся в исходное состояние («выключено» — положительное напряжение).12.8.5. Int 17h — поддержка принтера
Сервисы
Int 17h
: обеспечивают инициализацию, вывод байта данных и опрос состояния принтера, подключенного к LPT-порту. При вызове функция задается в регистре АН
, номер LPT-порта — в регистре DX.♦ АН
AL
по протоколу Busy
), формируется строб.♦ АН
Init#
, запрет аппаратных прерываний и переключение на вывод двунаправленного интерфейса).♦ АН
При возврате регистр АН
SR[7:3]
и программно формируемого флага тайм-аута. Биты 6 и 3 относительно байта, считанного из регистра состояния, инвертированы. Назначение бит байта состояния:♦ бит 7 — не занято (сигнал Busy
♦ бит 6 — подтверждение (сигнал Ack#
♦ бит 5 — конец бумаги (сигнал PaperEnd
♦ бит 4 — принтер готов (сигнал Select
♦ бит 3 — ошибка принтера (сигнал Error#
♦ биты 2:1=00 (не используются);
♦ бит 0 — флаг тайм-аута, устанавливается при неудачной попытке вывода символа, если сигнал Busy
Перехват прерывания Int 17h
Int 17h
можно организовать вывод через LPT-порт по протоколу ИРПР и даже через СОМ-порт), следует внимательно отнестись к битам возвращаемого байта состояния. При их неправильном формировании попытки вывода на печать могут приводить к ошибочным сообщениям.12.8.6. Int 1Ah и Int 15h — поддержка таймеров
Int 1Ah
позволяют считывать и модифицировать значения АН
.1. АН
СХ
— старшую часть, в DX
— младшую. AL
=0, если за последние 24 часа не было переполнения таймера. В современных версиях сброс AL
возвращает счетчик переполнений таймера, хранящийся в ячейке 40:0070h (в старых версиях это был флаг).2. АН
СХ
— старшая часть, в DX
— младшая) и сброс флага (счетчика) переполнения таймера в ячейке 40:0070h. В случае ошибки устанавливается флаг CF
=1.3. АН
СН
), минуту (CL
), секунду (DH
) и признак коррекции летнего/зимнего времени (DL
=1 — коррекция используется, DL
=0 — нет). Признаком успешной операции является флаг CF
=0. Во избежание ошибок некоторых BIOS при вызове флаг CF
должен быть сброшен.4. АН