Аппаратное обеспечение IBM PC© Александр Фролов, Григорий ФроловТом 2, книга 1, М.: Диалог-МИФИ, 1992. 6.4. Поддержка асинхронного адаптера в BIOSМы опишем функции BIOS, облегчающие обслуживание двух асинхронных адаптеров, COM1 и COM2. Эти функции доступны через прерывание INT 14h. Первая функция предназначена для инициализации портов асинхронного адаптера:
На входе: AH = 00h;
DX = номер порта: 0 - COM1, 1 - COM2;
AL = параметры инициализации (см. дальше).
На выходе: AH = состояние порта асинхронного адаптера;
AL = состояние модема.
При вызове этой функции регистр AL должен содержать параметры инициализации:
7 6 5 4 3 2 1 0
T-T-T-T-T-T-T-¬
¦ ¦ ¦ ¦ ¦
LT+-+T+T+T+T+T+T-
L=T=- L=¦ ¦ L=¦= Длина слова в битах:
¦ ¦ ¦ 00 - 5 бит;
¦ ¦ ¦ 01 - 6 бит;
¦ ¦ ¦ 10 - 7 бит;
¦ ¦ ¦ 11 - 8 бит.
¦ ¦ ¦
¦ ¦ L===== Количество стоповых бит:
¦ ¦ 0 - 1 бит;
¦ ¦ 1 - 2 бита.
¦ ¦
¦ L======= Четность:
¦ X0 - контроль на четность не
¦ используется;
¦ 01 - контроль на нечетность;
¦ 11 - контроль на четность.
¦
L============= Скорость передачи данных в бодах:
000 - 110
001 - 150
010 - 300
011 - 600
100 - 1200
101 - 2400
110 - 4800
111 - 9600
После вызова функции в регистр AH записывается состояние порта асинхронного адаптера: 7 6 5 4 3 2 1 0 T-T-T-T-T-T-T-¬ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ LT+T+T+T+T+T+T+T- ¦ ¦ ¦ ¦ ¦ ¦ ¦ L= таймаут, если установлен этот бит, ¦ ¦ ¦ ¦ ¦ ¦ ¦ другие биты не имеют значения; ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L=== регистр сдвига передатчика пуст; ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L===== буферный регистр передатчика пуст; ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L======= обнаружено состояние "BREAK"; ¦ ¦ ¦ ¦ ¦ ¦ ¦ L========= ошибка синхронизации; ¦ ¦ ¦ ¦ ¦ L=========== ошибка четности; ¦ ¦ ¦ L============= ошибка переполнения входного регистра; ¦ L=============== данные готовы. Регистр AL содержит байт состояния модема: 7 6 5 4 3 2 1 0 T-T-T-T-T-T-T-¬ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ LT+T+T+T+T+T+T+T- ¦ ¦ ¦ ¦ ¦ ¦ ¦ L= линия CTS изменила состояние; ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L=== линия DSR изменила состояние; ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L===== линия RI изменила состояние; ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L======= линия DCD изменила состояние; ¦ ¦ ¦ ¦ ¦ ¦ ¦ L========= состояние линии CTS; ¦ ¦ ¦ ¦ ¦ L=========== состояние линии DSR; ¦ ¦ ¦ L============= состояние линии RI; ¦ L=============== состояние линии DCD. Для передачи байта используется следующая функция:
На входе: AH = 01h;
DX = номер порта: 0 - COM1, 1 - COM2;
AL = передаваемый байт.
На выходе: AL сохраняется;
AH = состояние порта асинхронного адаптера,
если бит 7 регистра AH установлен в 1,
произошла ошибка.
Функция 02h предназначена для приема байта:
На входе: AH = 02h;
DX = номер порта: 0 - COM1, 1 - COM2.
На выходе: AL = принятый байт;
AH = состояние порта асинхронного адаптера,
если регистр AH не равен 0,
произошла ошибка.
Состояние порта асинхронного адаптера можно узнать с помощью функции 03h:
На входе: AH = 03h;
DX = номер порта: 0 - COM1, 1 - COM2.
На выходе: AH = состояние порта асинхронного адаптера;
AL = состояние модема.
|

