Адаптер PS/2 мыши для шины ISA 8

Все, что не подходит под определение "старого софта и железа", обсуждается здесь
Аватара пользователя
DonkeyHot
Advanced Member
Сообщения: 3601
Зарегистрирован: 24.03.2017,14:11
Откуда: Балашиха

Адаптер PS/2 мыши для шины ISA8

Сообщение DonkeyHot » 11.06.2019,13:15

A particular IRQ can only be assigned to one device. Two devices cannot have the same IRQ number or there will be a CONFLICT. If say two devices are assigned IRQ5 then the CPU will become confused; it will not know which of the two devices is trying to get it's attention when IRQ5 becomes active. This can cause your computer to hang.
говорится что нельзя, но помню девайсы работали. Надо проверить еще раз.
ZX/XT Самоделкин
Продам <- обновляю без апа, заходите.

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

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

Адаптер PS/2 мыши для шины ISA8

Сообщение Rio444 » 11.06.2019,13:22

С программной точки зрения проблем никаких. Обработчики прерываний назначаются по цепочке. Каждый по очереди проверяет по дополнительным признакам, его ли это прерывание. Если не его, вызывает следующий обработчик.
Неразрешимые проблемы с аппаратной. И именно для разных плат на шине ISA.
Электронка: Изображение копия Изображение

Аватара пользователя
DonkeyHot
Advanced Member
Сообщения: 3601
Зарегистрирован: 24.03.2017,14:11
Откуда: Балашиха

Адаптер PS/2 мыши для шины ISA8

Сообщение DonkeyHot » 11.06.2019,13:26

Согласен, надо освежить практику. Подозреваю что конфликт может быть при одновременном срабатывании прерываний от двух девайсов. Но даже в этом случае каскад обработчиков должен быть выполнен весь, даже если обработал свое устройство, это вероятно дело драйвера, меня больше интересует вопрос именно уровней на прерываниях, поскольку меня искушал соблазн навесить 13 на нижние 3-7 прерывания. Тоже и с DMA но там я вроде сделал некогда схему определения источника.
ZX/XT Самоделкин
Продам <- обновляю без апа, заходите.

i8088
Advanced Member
Сообщения: 4384
Зарегистрирован: 30.01.2015,17:06
Откуда: г. Баку, Азербайджан

Конкурсы

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

Адаптер PS/2 мыши для шины ISA8

Сообщение i8088 » 11.06.2019,16:07

XPOHOMETP писал(а): 11.06.2019,15:39 Но внутренние модемы спортстер/курьер прекрасно работали
и без отключения портов на мультикарте.
Примерно так: COM1 = мышь, СОМ4 = модем,
СОМ2 = связь с соседним компом по нуль-модемному кабелю.
Специально вытащил свой ISA USR - стоит на IRQ5 (выбор 2,3,4,5,7).
XPOHOMETP писал(а): 11.06.2019,15:39 В целом Вы правы, но обрывки воспоминаний говорят, что поочередно
использовать скажем COM1 и COM3 на одном прерывании вполне реально.
Т.е. оба устройства вставлены в ISA, а далее запускаем программу для одного из них
Так какой смысл, если одновременно не можем пользовать устройства?
И как будем разделять линию (от разных устройств) с учетом H-активности?
Как Вы отметили, тогда надо на каждом устройстве буфер с Z-состоянием городить, с
выделенным управлением. Как это сделать для встроенных COM портов?

PS. В целом, считаю дальнейшее обсуждение shared IRQ на ISA в рамках данной темы
не имеющим смысла, до нас уже все обсудили:)

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

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

Адаптер PS/2 мыши для шины ISA8

Сообщение Rio444 » 11.06.2019,16:47

С моей стороны попытка была. Модифицировал прошивку так, что адаптер сажал на ноль IRQ только если прерывания были активированы в COM порте (там есть регистр IER, устанавливая биты в котором можно активировать прерывания по приходу данных, опустошению передающего буфера и т.п.). Так вот, сразу это не взлетело, даже если адаптер стоял один, без мультикарты. А дальше возиться с этим не стал.
Будет время, попробую ещё раз. Сейчас опыта уже больше.
Электронка: Изображение копия Изображение

i8088
Advanced Member
Сообщения: 4384
Зарегистрирован: 30.01.2015,17:06
Откуда: г. Баку, Азербайджан

Конкурсы

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

Адаптер PS/2 мыши для шины ISA8

Сообщение i8088 » 11.06.2019,17:02

XPOHOMETP писал(а): 11.06.2019,16:43 Полагаю, что грамотные разработчики всё изобрели/сделали до нас.
Сомнительно, учитывая что в авторитетных книгах (М Гук) ясно пишется, что shared IRQ
на ISA в общем случае не работают
XPOHOMETP писал(а): 11.06.2019,16:43 Пример схемотехники был с реальной заводской платы LPT.
И являлся ответом на этот вопрос:
В LPT запрос вырабатывается по отрицательному перепаду сигнала ACK# если
разрешено аппаратное прерывание (CR4.1=1). И CR4.1 может и управлять буфером
Но как Вы будете делать это с COM, с его сложным разрешением прерываний?

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

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

Адаптер PS/2 мыши для шины ISA8

Сообщение Rio444 » 11.06.2019,17:46

XPOHOMETP, согласен с Вами. Скорее всего это возможно. Т.е. два устройства могут "сидеть" на одном IRQ, но работать одновременно не могут.
IRQ использует либо одно, либо другое. Как подтверждение - настоящая мультикарта не опускает IRQ, пока, например, не будет запущен драйвер мыши.
У меня почему-то так не получилось. Возможно допустил какую-то ошибку.
Предлагаю прекратить споры. Попробую на днях ещё раз. О результатах сообщу.
Когда занимался прошивкой, не стал углубляться в этот вопрос. Были другие нерешенные, более важные.
Электронка: Изображение копия Изображение

i8088
Advanced Member
Сообщения: 4384
Зарегистрирован: 30.01.2015,17:06
Откуда: г. Баку, Азербайджан

Конкурсы

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

Адаптер PS/2 мыши для шины ISA8

Сообщение i8088 » 11.06.2019,20:55

XPOHOMETP писал(а): 11.06.2019,17:31 Уж простите, но всю схему разрисовывать не буду.
Остальные подробности в документации на 8250 и т.п. должны быть...
Нашел схему адаптера на 16450! 74LS125 управляется с выхода OUT2 16450.
Discrete Output - Active Low - One of two user-programmable discrete outputs. This
output is controlled by writing to the OUT2 (bit 3) bit of the control register.

Это регистр MCR, бит IE. Те если запретить прерывания, то линия IRQ перейдет в Z-state.
Те, как Вы писали, если прерывания от UART запретить, то линия IRQ адаптера перейдет
в Z-state. Shared IRQ на ISA так конечно не получится, но поочередно устройства можно
использовать (но только при условии запрещения прерываний от ненужного в данный момент
устройства, а не просто его не-активности!). Или если одному из устройств прерывания не
требуется, можно ставить две карты. Спасибо за разъяснения!!

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

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

Адаптер PS/2 мыши для шины ISA8

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

i8088, а можно поподробнее? Желательно со схемой?
У регистра MCR нет бита IER. Там только DTR, RTS, OUT1 и OUT2.
Если для управления прерываниями используется "OUT2" - то это, блин, очередная недокументированная функция :(
Впрочем, смутно вспоминаю, где-то встречал, что для функционирования прерываний надо этот бит установить в "1". Но нигде не встречал объяснения почему, и как это работает.
Последний раз редактировалось Rio444 11.06.2019,22:26, всего редактировалось 1 раз.
Электронка: Изображение копия Изображение

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

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

Адаптер PS/2 мыши для шины ISA8

Сообщение Rio444 » 11.06.2019,22:26

i8088, в очередной раз восхищаюсь, как Вы умудряетесь давать столь полезные советы буквально только коснувшись темы!
Слева адаптер, справа COM порт мультикарты. Он на самом деле COM3, но биос нумерует порты по порядку, а COM2 отключен.
Изображение
Здесь уже запущен драйвер мыши. Адаптер опустил IRQ4 на ноль. Поэтому второй порт уже не может дергать прерывания.
Изображение

i8088, спасибо! Выяснен ещё один нюанс работы COM-порта.
Другая, обнаруженная мною недокументированная фича заключается в том, что младшие 4 бита регистра MSR можно не только читать, но и писать в них! Хотя об этом нигде нет даже малейшего упоминания!
Электронка: Изображение копия Изображение

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

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

Адаптер PS/2 мыши для шины ISA8

Сообщение Rio444 » 12.06.2019,01:24

XPOHOMETP, не обижайтесь, но ни Вы, ни DonkeyHot ничего нового мне не сказали. А наводку на OUT2 дал именно i8088.
Вы конечно наверняка знали об OUT2 ;) Но написали о своём знании только после i8088.
В любом случае, благодарен всем, кто участвовал в дискуссии и помог найти ответ.
Что касается
XPOHOMETP писал(а): 11.06.2019,23:42 Так что все "украдено" до нас. А уж если в фирменной документации порыться ... ...
Искать инфу сейчас на порядки проще, чем в тех же 90-х, главное не лениться.
Зачастую неизвестно, где искать ответ. Именно в этом главная проблема.
Да и попробуйте, найдите информацию о том, что
Rio444 писал(а): 11.06.2019,22:26 Другая, обнаруженная мною недокументированная фича заключается в том, что младшие 4 бита регистра MSR можно не только читать, но и писать в них!
Тогда, пожалуй, я признаю, что не умею искать информацию ;)
Электронка: Изображение копия Изображение

Ответить