Объявление форума |
Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС. |
Полигон-2 » IBM PC-совместимое. До 2000 года включительно » Переделка АТ интерфейса клавиатуры в PS/2 на старых платах |
<<Назад Вперед>> | Страницы: 1 2 3 4 5 ... 9 10 11 12 13 * 14 15 16 17 | Печать |
i8088
Advanced Member
Откуда: г. Баку, Азербайджан Всего сообщений: 2132 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 30 янв. 2015 |
Немного не совсем по теме, но все же, возвращаясь к вопросу задержки. Обнаружил любопытный эффект на плате IBM 5150 с таймером 8253 от AMD, образца 1983 года. Простое чтение счетчиков канала 0 без latch приводит к резкому понижению коэффициента деления, особенно при больших исходных коэффициентах. Так, при делителе по умолчанию (65536) просто после чтения (в debug) порта 0x40, коэффициент деления канала 0 становится равным 2! Проверялось осциллографом. При чтении с latch чтение нормальное. Столь малые КД для канала 0 ведут к зависание машины (слишком высокая частота IRQ0). Те просто: debug -i 40 и все, машина стала. На IBM 5160 c таймером 8253 от Intel (плата выпуска 1986года) такого не наблюдалось, я эксперименты в этой теме делал с ней. У кого есть IBM 5150, большая просьба проверить проверить чтение порта 0x40! |
Rio444
Гость
Откуда: Ростов-на-Дону Всего сообщений: 8632 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 14 сен. 2014 |
Немного по теме добавлю. Как писал выше, наличие PS/2 мыши также фиксируется в CMOS. Но оно не стандартизировано и для разных BIOS "mouse enable" находится в разных регистрах. Стандартная карта CMOS: Фролов Расширенная, для разных BIOS. Поэтому, содержимое CMOS на работу драйвера мыши никак не влияет. Вероятно сам BIOS использует эту информацию. Возможная лазейка - установить в CMOS "mouse enable", в надежде, что BIOS при загрузке воспользуется этой информацией и включит поддержку PS/2 мыши. |
Rio444
Гость
Откуда: Ростов-на-Дону Всего сообщений: 8632 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 14 сен. 2014 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 1 декабря 2017 23:33 Сообщение отредактировано: 1 декабря 2017 23:33
Нашел ещё одну ошибку. Теперь работает Пока не выкладываю, программа ещё сыровата. Надо ещё тестировать и оптимизировать. Но если кто-то оперативно повторит схему, пишите - поделюсь, в состоянии "как есть". Заодно потестируете. Проверял: - i486DX2-66, чипсет Sis471, BIOS Award 4.50, родной KBC LT38C41, - AMD 386DX-40, чипсет PC Chips "Chip 11", Bios AMI ver. 2.11, KBC Sa6042A Драйверы разные, включая драйверы от A4, Genius, Microsoft. Windows 3.11 сама "подхватывает" мышь, без всяких драйверов. Остаётся проверить на Win9x. Отрицательный момент. Win NT 3.51 мышь не видит. Хотя должна полностью игнорировать BIOS. По всей видимости, ей не хватает размаскированного прерывания Irq12 и/или наличия мыши в списке оборудования в области данных BIOS 40:10h. Код для размаскирования/добавления очень простой и короткий. Но не знаю, куда и как его вставить до загрузки Win. |
i8088
Advanced Member
Откуда: г. Баку, Азербайджан Всего сообщений: 2132 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 30 янв. 2015 |
Rio444 написал: Отлично! Нашел ещё одну ошибку. Rio444 написал: Можно рассмотреть вставление кода модифицировав какой либо менеджер загрузки с Код для размаскирования/добавления очень простой и короткий. Но не знаю, куда и как его вставить до загрузки Win. открытыми исходниками. Правильно однако сделать нормальный драйвер, сам по себе он простейший, но по деталям не подскажу, тк не использую windows. В качестве плана - найти DDK для NT3.51, посмотреть примеры кодов и сделать драйвер который может даже не регистрироваться в системе, и не отвечать на команды OS. По аналогии с DOS драйвером - он должен выполнить инициализацию, выполнить требуемый код и далее освободить память (как это делается, если устройства, с которым дрвйвер работает не найдено). |
Tronix
Advanced Member
Откуда: Москва Всего сообщений: 1749 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 15 янв. 2008 |
i8088 написал: найти DDK для NT3.51https://winworldpc.com/product/windows-sdk-ddk/nt-3x |
Rio444
Гость
Откуда: Ростов-на-Дону Всего сообщений: 8632 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 14 сен. 2014 |
i8088 написал: Но тогда придется делать драйвер для каждой оси. В качестве плана - найти DDK для NT3.51, посмотреть примеры кодов и сделать драйвер Это, как минимум, NT 4.0, OS/2, Linux. Мне видится более интересным вариант модификации MBR. Делают же это как-то вирусы? Другие, возможные варианты: - дополнение кода bios в ПЗУ, - отдельное ПЗУ (например на сетевой карте). С этим вопросом перекликается другой, очень интересный. Возможно ли создание контроллера PS/2 мыши на отдельной ISA плате? Основная сложность в том, что реальный PS/2 контроллер не самостоятельное устройство, а "часть" контроллера клавиатуры. Взаимодействие с ним осуществляется по тем же адресам: 60h для данных и 64h - управление и чтение статуса. Внешний PS/2 контроллер мыши можно создать как отдельное, независимое устройство. Но в этом случае он будет иметь свои, другие адреса шины портов и требовать драйвера для каждой ОС. Для DOS и Win3.x, Win9x драйвер можно сказать готов. Достаточно внести небольшие изменения в существующий код. На остальные оси драйвера нужно будет писать с нуля. Второй вариант - попытаться "скрестить" существующий KBC и новый контроллер PS/2. По всей видимости, понадобится дополнительная схема, которая будет отключать основной контроллер, когда необходимо взаимодействие с контроллером PS/2. Задача если и возможная, то весьма нетривиальная. Вероятно надо будет подключаться (или включаться в разрыв) ног контроллера: "Chip Select", "Host Read", "Host Write". |
i8088
Advanced Member
Откуда: г. Баку, Азербайджан Всего сообщений: 2132 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 30 янв. 2015 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 2 декабря 2017 12:39 Сообщение отредактировано: 2 декабря 2017 12:46
Rio444 написал: Все варианты возможны, кстати модификация BIOS для Award (если достаточно размаскировать IRQ12 Мне видится более интересным вариант модификации MBR. Делают же это как-то вирусы? итп, те есть отлаженный код) довольно простая. Надо или внедрится в POST jump table (после настройки 8259, на место dummy,онми всегда есть) Или добавить ISA module в BIOS, с помощью CBROM (это менее надежно). Основная здесь сложность (если не требовать спец драйвера, те если контроллер kbd+mouse по С этим вопросом перекликается другой, очень интересный. Возможно ли создание контроллера PS/2 мыши на отдельной ISA плате? стандартным адресам, и также минимум доработок платы), это полностью отключить встроенный контроллер, те сть весь функционал переложить на ISA плату. Возможно, достаточно изъять 8042 из панели, или если он запаян, организовать посоянно RESET или отсутствие выборки #CS для него. (8042 - не совсем 8048, он специально предназначен для работы в составе микропроцессорных систем, есть изменения, в виде наличия A0 и CS в частности). Если он подключен к шине данных ISA без дополнительных буферов (типа LS 245, это легко проверить), то изымания должно быть достаточно, тк вместо встроенного быдет выбираться внешний, а дешифратор буден на ISA плате, те ситуации когда на шине ISA окажутся два устройства по одному адресу, не должно быть. upd. В оригинальной AT буфер есть, отделяющий внутреннние устройства, от устройств на ISA. Тогда правильнее контроллер по нестандартным адресам, со своим драйвером. |
Rio444
Гость
Откуда: Ростов-на-Дону Всего сообщений: 8632 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 14 сен. 2014 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 2 декабря 2017 13:37 Сообщение отредактировано: 2 декабря 2017 13:39
i8088 написал: Не совсем понял, как это влияет? В оригинальной AT буфер есть, отделяющий внутреннние устройства, от устройств на ISA. i8088 написал: Это мне кажется совсем не сложным. Прямой и грубый вариант - откусить ногу /CS и повесить её через резистор на +5В. Основная здесь сложность... это полностью отключить встроенныйконтроллер Возможно, есть какие-то программные варианты. i8088 написал: Возможно ли это? Помимо обслуживания мыши и клавиатуры, KBC, как минимум, управляет А20 Gate и программным Reset. те сть весь функционал переложить на ISA плату. Схему изучал давно, но помнится, не все сигналы выведены на ISA. Придется бросать провода с ножек 8042, что нивелирует весь смысл затеи. Наверное, проще оставить существующий KBC, но отключать его, когда идёт обращение к портам 60h и 64h, выделяя команды для мыши и клавиатуры. Причем очень оперативно. Наверное, с помощью ПЛИС. Так, чтобы команды, связанные с А20 Gate и Reset продолжали работать. |
i8088
Advanced Member
Откуда: г. Баку, Азербайджан Всего сообщений: 2132 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 30 янв. 2015 |
Rio444 написал: Даже если отключить контроллер KBC, буфер двунаправленный может быть будет Не совсем понял, как это влияет? выбран при обращении к портам KBC, и будет передавать логические единицы на ISA. Rio444 написал: Черт, я совсем забыл за это! Тогда да, полная замена KBC без проводов от ISA платы невозможна. Помимо обслуживания мыши и клавиатуры, KBC, как минимум, управляет А20 Gate и программным Reset. Rio444 написал: По моему это несколько громоздко и не очень надежно, опять таки не на всех платах 8042 в явном виде... Наверное, проще оставить существующий KBC, но отключать его, когда идёт обращение к портам 60h и 64h, выделяя команды для мыши и клавиатуры. Причем очень оперативно. Наверное, с помощью ПЛИС. Так, чтобы команды, связанные с А20 Gate и Reset продолжали работать. Мне все же кажется, правильнее делать платы по нестандартным адресам, со своим драйвером, специально для мыши, это будет пригодно и для плат, где нет "настоящего" 8042. |
Rio444
Гость
Откуда: Ростов-на-Дону Всего сообщений: 8632 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 14 сен. 2014 |
i8088 вот тут ещё одна мысль появилась. Что если использовать плату, которая ОС будет видна как упомянутая выше "Bus Mouse"? А фактически это будет переходник с "Bus Mouse" на PS/2 мышь. В википедии пишут, что Bus Mouse выпускалась до ~2000 года. Все старые ОС должны её знать. Остаётся это проверить и найти документацию на протоколы Bus Mouse. |
<<Назад Вперед>> | Страницы: 1 2 3 4 5 ... 9 10 11 12 13 * 14 15 16 17 | Печать |
Полигон-2 » IBM PC-совместимое. До 2000 года включительно » Переделка АТ интерфейса клавиатуры в PS/2 на старых платах |
1 посетитель просмотрел эту тему за последние 15 минут |
В том числе: 1 гость, 0 скрытых пользователей |
Последние | |
[Москва] LIQUID-Акция. Сливаются разъемы CF МС7004 и 7004А на AT и XT Пайка термотрубок Проммать s478 PEAK 715VL2-HT ( Full-Size SBC) Подскажите по 386 материке по джамперам. |
Самые активные 5 тем | |