Функции BIOS для СОМ-портов
2.5.5. Функции BIOS для СОМ-портов
В процессе начального тестирования POST BIOS проверяет наличие последовательных портов (регистров UART 8250 или совместимых) по стандартным адресам и помещает базовые адреса обнаруженных портов в ячейки BIOS Data Area 0:0400, 0402, 0404, 0406. Эти ячейки хранят адреса пор- тов с логическими именами СОМ 1-COM4. Нулевое значе- ние адреса является признаком отсутствия порта с данным номером. В ячейки 0:047С, 047D, 047Е, 047F заносятся кон- станты, задающие тайм-аут для портов.
Обнаруженные порты инициализируются на скорость обме- на 2400 бит/с, 7 бит данных с контролем на четность
(even), 1 стоп-бит. Управляющие сигналы интерфейса DTR и RTS переводятся в исходное состояние ("выключено" - положительное напряжение).
Порты поддерживаются сервисом BIOS INT 14h, который обес- печивает следующие функции:
ООЬ - инициализация (установка скорости обмена и фор- мата посылок, заданных регистром AL; запрет источни- ков прерываний). На сигналы DTR и RTS влияния не ока- зывает (после аппаратного сброса они пассивны).
Olh - вывод символа из регистра AL (без аппаратных пре- рываний). Активируются сигналы DTR и RTS, и после освобождения регистра THR в него помещается выводи- мый символ. Если за заданное время регистр не освобож- дается, фиксируется ошибка тайм-аута и функция завер- шается.
02h - ввод символа (без аппаратных прерываний). Акти- вируется только сигнал DTR (RTS переходит в пассивное состояние), и ожидается готовность принятых данных, принятый символ помещается в регистр AL. Если за за- данное время данные не получены, функция завершает- ся с ошибкой тайм-аута.
03h - опрос состояния модема и линии (чтение регист- ров MSR и LSR). Эту гарантированно быструю функцию обычно вызывают перед функциями ввода/вывода во из- бежание риска ожидания тайм-аута.
При вызове INT 14h номер функции задается в регистре АН, номер порта (0-3) - в регистре DX(0 - СОМ 1, 1 - COM2...). При возврате из функций 0,1 и 3 регистр АН содержит байт состояния линии (регистр LSR), AL - байт состояния моде- ма (MSR). При возврате из функции 2 нулевое значение бита 7 регистра АН указывает на наличие принятого симво- ла в регистре AL', ненулевое значение бита 7 - на ошибку приема, которую можно уточнить функцией 3.
Формат байта состояния линии (регистр АН):
Бит 7 - ошибка тайм-аута (после вызова функции 2 - признак любой ошибки).
Бит 6 - регистр сдвига передатчика пуст (пауза передачи).
Бит 5 - промежуточный регистр передатчика пуст (го- тов принять символ для передачи).
SB Бит 4 - обнаружен обрыв линии.
вя Бит 3 - ошибка кадра (отсутствие стоп-бита).
а? Бит 2 - ошибка паритета принятого символа.
ш Бит 1 - переполнение (потеря символа).
Бит 0 - регистр данных содержит принятый символ.
Формат байта состояния модема (регистр AL):
Бит 7 - состояние линии DCD.
Бит 6 - состояние линии RI.
?й Бит 5 - состояние линии DSR.
si Бит 4 - состояние линии CTS.
т Бит 3 - изменение состояния DCD.
Бит 2 - изменение огибающей RI.
as Бит 1 - изменение состояния DSR.
ss Бит 0 - изменение состояния CTS. Формат регистра AL при инициализации:
Биты [7:5] - скорость обмена:
000-110; 010-300; 100-1200; 110-4800,
001-150; 011-600; 101-2400; 111-9600 бит/с. Биты [4:3] - контроль паритета:
01 - число единиц нечетное,
11 -четное,
00 и 10 - без контроля.
Бит 2 - количество стоп-бит: 0-1 бит, 1-2 бита (на скорости 110 бит/с - 1,5 стоп-бита).
т Биты [1:0] - длина посылки: 00-5 бит, 01-6 бит, 10-7 бит, 11-8 бит.