Инициализация COM порта в BIOS и DOS

Мониторы, принтеры, клавиатуры, колонки и другие устройства
Аватара пользователя
Rio444
Почётный пользователь
Сообщения: 26861
Зарегистрирован: 14.09.2014,19:11
Откуда: Ростов-на-Дону

Вклад в сообщество

Инициализация COM порта в BIOS и DOS

Сообщение Rio444 » 19.05.2019,21:04

uav1606, посмотрел отчет.
Что-то не сходится.
Судя по результатам теста, "received F4h", но кода "F4" нигде в отчете нет.
Чтение из регистра 3fe всего в двух местах:
com1 register read from address: 0x03fe = 0xff
com1 register read from address: 0x03fe = 0x03
Электронка: Изображение копия Изображение

Аватара пользователя
uav1606
Advanced Member
Сообщения: 5969
Зарегистрирован: 16.01.2008,22:04
Откуда: Енакиево
Контактная информация:

Вклад в сообщество

Инициализация COM порта в BIOS и DOS

Сообщение uav1606 » 19.05.2019,21:18

Не могу ничего по этому поводу сказать - возможно, имеется в виду не сам регистр, а что-то ещё? Т.е. F4 - это не содержимое Modem Status Register, а что-то другое? Но так сразу я не соображу, что это может быть.

Аватара пользователя
Rio444
Почётный пользователь
Сообщения: 26861
Зарегистрирован: 14.09.2014,19:11
Откуда: Ростов-на-Дону

Вклад в сообщество

Инициализация COM порта в BIOS и DOS

Сообщение Rio444 » 19.05.2019,21:21

Может это значение "F4" получено обработчиком прерывания IRQ4?
Он же не попал в отчет?
Электронка: Изображение копия Изображение

Аватара пользователя
uav1606
Advanced Member
Сообщения: 5969
Зарегистрирован: 16.01.2008,22:04
Откуда: Енакиево
Контактная информация:

Вклад в сообщество

Инициализация COM порта в BIOS и DOS

Сообщение uav1606 » 19.05.2019,21:38

В отчёт должны были попасть все обращения к диапазону порта COM1, даже из BIOS и прочего. Может быть, эти F0 и F4 - это нечто, генерируемое самим CheckIt по своей внутренней логике, то есть не прямое значение регистра MSR, а как-то обработанное? Там же нижние 4 бита - это какие-то delta, возможно, CheckIt их как-то так странно интерпретирует?
Прерывания при этом тесте, кстати, не используются вообще.

Аватара пользователя
Rio444
Почётный пользователь
Сообщения: 26861
Зарегистрирован: 14.09.2014,19:11
Откуда: Ростов-на-Дону

Вклад в сообщество

Инициализация COM порта в BIOS и DOS

Сообщение Rio444 » 19.05.2019,21:43

Тогда вообще ничего не понятно.
Нижние 4 бита это действительно дельта. Они сбрасываются после чтения этого регистра.

Всё равно спасибо за помощь. Буду копать дальше.
Электронка: Изображение копия Изображение

Аватара пользователя
uav1606
Advanced Member
Сообщения: 5969
Зарегистрирован: 16.01.2008,22:04
Откуда: Енакиево
Контактная информация:

Вклад в сообщество

Инициализация COM порта в BIOS и DOS

Сообщение uav1606 » 19.05.2019,21:55

Ещё интереснее вот это:
00130124390d[SER ] com1 register write to address: 0x03fe = 0x00
Зачем CheckIt это делает, то есть пишет в read-only регистр?

Аватара пользователя
Rio444
Почётный пользователь
Сообщения: 26861
Зарегистрирован: 14.09.2014,19:11
Откуда: Ростов-на-Дону

Вклад в сообщество

Инициализация COM порта в BIOS и DOS

Сообщение Rio444 » 19.05.2019,22:00

В Вашем отчете следующей строкой написано: "com1: write to MODEM status register ignored"
Мне кажется это проверка на невозможность записи в read-only регистр.

Собственно потом из него читается FF, как и должно быть.
Хотя нет. Должно читаться FB. Третий бит устанавливается не по изменению, а по спаду сигнала, с 1 в 0.

Надо поэкспериментировать на "живой" мультикарте.
Электронка: Изображение копия Изображение

XPOHOMETP

Инициализация COM порта в BIOS и DOS

Сообщение XPOHOMETP » 25.06.2019,23:57

uav1606 писал(а): 19.05.2019,21:38 Прерывания при этом тесте, кстати, не используются вообще.
Подтверждаю, проверено на реальном железе.
Rio444 писал(а): 19.05.2019,20:19 Подозреваю, что 8250/16450 какой-то недокументированный глюк,
из-за чего он и проходит этот тест.
Глюк документирован - он есть на 8250 и устранен в 16450.
Checkit не виноват.
Rio444 писал(а): 19.05.2019,22:00 Надо поэкспериментировать на "живой" мультикарте.
Сделано, см. выше.
Rio444 писал(а): 19.05.2019,22:00 "com1: write to MODEM status register ignored"
Мне кажется это проверка на невозможность записи в read-only регистр.
ИМХО, вспоминая нашу беседу про read-only регистры:
возможно у 8250 он таким и является, а Checkit, споткнувшись, завершает тест.
F4 / F0 - внутренние переменные Checkit, в лог не попали, т.к. запись отвергнута.
В 16450, согласно описанию, запись возможна. Ошибок нет...

Аватара пользователя
Rio444
Почётный пользователь
Сообщения: 26861
Зарегистрирован: 14.09.2014,19:11
Откуда: Ростов-на-Дону

Вклад в сообщество

Инициализация COM порта в BIOS и DOS

Сообщение Rio444 » 26.06.2019,00:00

Да, скорее всего именно так.
Электронка: Изображение копия Изображение

XPOHOMETP

Инициализация COM порта в BIOS и DOS

Сообщение XPOHOMETP » 26.06.2019,11:46

Провел дополнительные проверки Modem Status Register.

Подопытные: CM611P - болгарский клон 8250
и FM88450-A (производителя определить не удалось).
Обе м/c 1989 г.в., из старых запасов.

Младшие 4 бита доступны на запись и у 8250, и у 88450.
Независимо от установки режима "loopback".

Аватара пользователя
Rio444
Почётный пользователь
Сообщения: 26861
Зарегистрирован: 14.09.2014,19:11
Откуда: Ростов-на-Дону

Вклад в сообщество

Инициализация COM порта в BIOS и DOS

Сообщение Rio444 » 26.06.2019,12:24

XPOHOMETP писал(а): 26.06.2019,11:46 Младшие 4 бита доступны на запись и у 8250, и у 88450.
Независимо от установки режима "loopback".
Вам об этом же и писал в теме про адаптер.
Я проверял не только COM-порт на мультикарте, но и встроенный на плате Pentium, чипсет 430TX. Он себя тоже так ведет.
Так что это сделано абсолютно осознанно.
Гук в своих "Аппаратных интерфейсах..." явно указывает, что MSR доступен как R/W.
Но делает сноску
1 Некоторые биты допускают только чтение. Запись в регистр может привести к сбою
протокола.
Впрочем, нигде потом не разъясняет, какие биты можно только читать, а какие и записывать.
Думаю смыл возможности записи младших 4-х битов заключается в том, что при чтении MSR они всегда автоматом сбрасываются в ноль.
При этом могут показывать до 4-х разных событий, произошедших на линиях управления от модема.
В случае, если обработчик способен обработать только одно событие, они читает MSR, выполняет необходимые действия, сбрасывает бит за который отвечает, пишет новое значение MSR,
и вызывает следующий обработчик, которые будет обрабатывать другие события.
Электронка: Изображение копия Изображение

Ответить