Модемы и факс-модемы. Программирование для MS-DOS и Windows

Поддержка асинхронного адаптера в BIOS


В этом разделе мы опишем функции BIOS, облегчающие обслуживание асинхронного последовательного адаптера. Эти функции доступны через прерывание INT 14h.

Первая функция предназначена для инициализации портов асинхронного адаптера:

На входе:  AH = 00h;

     

DX = номер порта:   0 - COM1, 1 - COM2, 2 - COM3, 3 - COM4;

     

AL = параметры инициализации (см. ниже).

На выходе: AH = состояние порта асинхронного адаптера;

     

AL = состояние модема.

При вызове этой функции регистр AL должен содержать параметры инициализации (x - состояние бита безразлично):

Биты

Смысл



D1 D0

Длина слова в битах:

00 - 5 бит;

01 - 6 бит;

10 - 7 бит;

11 - 8 бит

D2

Количество стоповых бит:

0 - 1 бит;

1 - 2 бита

D4 D3

Четность:

x0 - контроль на четность не используется;

01 - контроль на нечетность;

11 - контроль на четность

D7-D5

Скорость передачи данных:

000 - 110 бит/с

001 - 150 бит/с

010 - 300 бит/с

011 - 600 бит/с

100 - 1200 бит/с

101 - 2400 бит/с

110 - 4800 бит/с

111 - 9600 бит/с

После вызова функции в регистр AH записывается состояние порта асинхронного адаптера:

Бит

Смысл

D0

Тайм-аут, если установлен этот бит, другие биты не имеют значения

D1

Регистр сдвига передатчика пуст

D2

Буферный регистр передатчика пуст

D3

Обнаружено состояние BREAK

D4

Ошибка синхронизации

D5

Ошибка четности

D6

Ошибка переполнения входного регистра

D7

Данные готовы

Регистр AL содержит байт состояния модема:

Бит

Смысл

D0

Линия CTS изменила состояние

D1

Линия DSR изменила состояние

D2

Линия RI изменила состояние

D3

Линия DCD изменила состояние

D4

Состояние линии CTS

D5

Состояние линии DSR

D6

Состояние линии RI

D7

Состояние линии DCD

Для передачи байта используется следующая функция:

На входе:  AH = 01h;

     

DX = номер порта:   0 - COM1, 1 - COM2, 2 - COM3, 3 - COM4;

     

AL = передаваемый байт.


На выходе: AL сохраняется;

      AH = состояние порта асинхронного адаптера,

             если бит 7 регистра AH установлен в 1,

             произошла ошибка.

Функция 02h предназначена для приема байта:

На входе:  AH = 02h;

      DX = номер порта:   0 - COM1, 1 - COM2, 2 - COM3,

                                3 - COM4;

На выходе:     AL = принятый байт;

      AH = состояние порта асинхронного адаптера,

             если регистр AH не равен 0,

             произошла ошибка.

Состояние порта асинхронного адаптера можно узнать с помощью функции 03h:

На входе:  AH = 03h;

      DX = номер порта:   0 - COM1, 1 - COM2, 2 - COM3,

                   3 - COM4;

На выходе: AH = состояние порта асинхронного адаптера;

      AL = состояние модема.


Содержание раздела