3. Определение статуса линии
Регистр статуса линии определяет протокол связи. Адрес порта ре-
гистра на 5 больше базового адреса данного канала. Обычно он постоянно
просматривается в процессе обмена через коммуникационный порт. При пе-
редаче данных регистр сообщает, что предыдущий символ уже послан, поз-
воляя программе записать новый символ поверх его. При приеме данных
регистр информирует программу о поступлении следующего символа, с тем,
чтобы программа могла прочитать его прежде, чем он будет уничтожен
очередным. Значения битов этого регистра следующие:
Таблица 5.
-------T-------------------------------------------------------------¬
¦ биты ¦ С м ы м ы с л б и т о в п о л я ¦
+------+-------------------------------------------------------------+
¦ ¦ ¦
¦ 0 ¦ 1 = байт данных получен; ¦
¦ 1 ¦ 1 = ошибка переполнения - полученные данные перезаписаны ¦
¦ ¦ (предыдущий символ не был вовремя считан); ¦
¦ 2 ¦ 1 = ошибка паритета; ¦
¦ 3 ¦ 1 = ошибка синхронизации (число стоп-битов в принятом ¦
¦ ¦ символе не равно установленному значению); ¦
¦ 4 ¦ 1 = обнаружен перерыв (получена длинная строка единиц: ¦
¦ ¦ удаленный абонент запрашивает конец передачи или делает ¦
¦ ¦ паузу); ¦
¦ 5 ¦ 1 = регистр-защелка хранения данных передатчика свободен ¦
¦ ¦ (в этот регистр в параллельном коде заносятся подлежащие ¦
¦ ¦ передаче данные); ¦
¦ 6 ¦ 1 = выходной сдвиговой регистр передатчика пуст (этот ¦
¦ ¦ регистр заполняется содержимым регистра хранения данных ¦
¦ ¦ передатчика и преобразует их в последовательный код); ¦
¦ 7 ¦ 1 = ошибка тайм-аута (передача за установленное время ¦
¦ ¦ не состоялась). ¦
L------+--------------------------------------------------------------
3.1. Программирование 8250
Для определения статуса следует из порта, адрес которого на 5
больше базового адреса, считать байт. Его элементы расшифровываются в
соответствии с указанной выше таблицей. Обработка особых ситуаций
должна предусматривать переход к подпрограммам чтения из файла-источ-
ника очередного передаваемого символа; записи в файл-приемник очеред-
ного принимаемого символа; анализа и обработки ошибок, в том числе
подготовкой и посылкой ARQ-примитивов; завершения работы соединения по
поступлении запроса на конец передачи.
3.2. Использование прерывания 14Н
Для определения статуса следует воспользоваться функцией 3 преры-
вания 14Н. В DX должен быть расположен номер коммуникационного порта,
к которому происходит доступ, где СОМ1 = 0, СОМ2 = 1. После выполнения
команды INT 14H в АН будет размещено содержимое регистра статуса ли-
нии. Его элементы расшифровываются в соответствии с указанной выше
таблицей. В AL будет размещено содержимое регистра статуса модема,
расшифровка которого (см. лабораторную работу N 4) может в некоторых
случаях объяснить причину ошибок.
Обработка особых ситуаций должна предусматривать переход к подп-
рограммам чтения из файла-источника очередного передаваемого символа;
записи в файл-приемник очередного принимаемого символа; анализа и об-
работки ошибок, в том числе подготовкой и посылкой ARQ-примитивов; за-
вершения работы соединения по поступлении запроса на конец передачи.