Объявление форума |
Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС. |
Полигон-2 » IBM PC-совместимое. До 2000 года включительно » Переделка АТ интерфейса клавиатуры в PS/2 на старых платах |
<<Назад Вперед>> | Страницы: 1 2 * 3 4 5 6 .. 12 13 14 15 16 17 | Печать |
IdeaFix |
Сообщение отправлено: 15 октября 2017 18:04
Ну, я далее просто зритель и/или покупатель... по делу ничего сказать не могу |
Сейчас на форуме |
Anonymous
Advanced Member
Откуда: Москва(Россия) Всего сообщений: 2537 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 22 нояб. 2011 |
Rio444 написал: А в этом и смысл, мышка ps/2 и клавиатура работают через одни регистры, у них только прерывание различается. Там смысл в замене контроллера без поддержки PS/2 на контролер с поддержкой. |
i8088
Advanced Member
Откуда: г. Баку, Азербайджан Всего сообщений: 2132 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 30 янв. 2015 |
Предварительные соображения по поводу ISA платы - легче использовать готовый прошитый 8042, но надо как-то отключить клавиатурную часть, иначе потребуется сделать модернизированную прошивку только для мыши. Ну и еще понадобятся дешифраторы и буфера, здесь можно подсмотреть в доступных схемах не-чипсетных AT плат. По поводу IRQ12 - никакого обработчика писать не требуется (этим занимается PS2 mouse driver, а BIOS я думаю ставит просто IRET). BIOS просто запрещает выделение этого прерывания для мыши (или всю mouse part), тк PS2 mouse необязательное устройство. Поскольку это может быть чипсетозависимым, OS этим как правило не занимается. Правильнее всего сделать option ROM (BIOS расширения), который выполнит эту работу. Но можно обойтись программой или драйвером, которая разблокирует mouse part в контроллере клавиатуры. Для DOS принципиальных проблем не вижу (на первый взгляд, по крайней мере). Здесь можно попробовать помочь, только datasheet на старый PS2+mouse controller надо поискать. |
Rio444
Гость
Откуда: Ростов-на-Дону Всего сообщений: 8632 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 14 сен. 2014 |
Anonymous написал: 7406 - рекомендации производителей. В типовых схемах именно она. Хотя, наверное, можно поставить и 7405. Rio444 написал:Это высоковольтовая, 30в (оно зачем надо?), полный аналог 7405 по выводам. 7407 - без инверсии, потому и написал о зависомости от версии прошивки. Истина где-то рядом(с) 7406. Anonymous написал: Возможно, начиная с Windows NT. Win9x использует прерывания Bios. Rio444 написал:Все полноценные ОС используют после загрузки свой драйвер, биос после запуска ядра идёт отдыхать. Гляньте мою древнюю тему про оживление безбиосной промплатки. Как понял, главная загвоздка - поддержка биосом. Если поддерживает, то всё ОК. Если нет - нужно писать свой обработчик прерывания от мыши. Насколько понял, никто его ещё не написал. |
Rio444
Гость
Откуда: Ростов-на-Дону Всего сообщений: 8632 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 14 сен. 2014 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 15 октября 2017 20:09 Сообщение отредактировано: 15 октября 2017 20:15
i8088 написал: Всё не так просто. При "срабатывании" IRQ12, через прерывание Bios вызывается обработчик, которой уже вызывает драйвер мыши. По поводу IRQ12 - никакого обработчика писать не требуется (этим занимается PS2 mousedriver, а BIOS я думаю ставит просто IRET). Для иниализации этого обработчика вызывается другое прерывание, через которое назначается адрес драйвера мыши. i8088 написал: Даташиты: Здесь можно попробовать помочь, только datasheet на старый PS2+mouse controller надо поискать.HT6542B, VT82C42, Intel 87C42. Если мало, ещё найду. |
Rio444
Гость
Откуда: Ростов-на-Дону Всего сообщений: 8632 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 14 сен. 2014 |
Контроллер определяет, в каком режиме он работает (АТ или PS/2) по схеме включения. Для остальной части компьютера режим работы контроллера значения не имеет. Разве что, в режиме АТ невозможна работа мыши PS/2. Клавиатура работает одинаково в обоих режимах. Подключение контроллера в режиме АТ (из даташита на VT82C42): В режиме PS/2: |
i8088
Advanced Member
Откуда: г. Баку, Азербайджан Всего сообщений: 2132 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 30 янв. 2015 |
Rio444 написал: Спасибо! Всё не так просто. При "срабатывании" IRQ12, через прерывание Bios вызывается обработчик, которой уже вызывает драйвер мыши. Нашел в исходниках Award, что Вы имели ввиду. ifndef\tNO_PS2_MOUSE_SUPPORT ;***************************************************************************** ; Procedure Name:\tsubf_07 ;\tDevice driver far call initialization ;\tSet INT74 far call address with ES:BX and set far call flag (27:b.7) ;\tAssume always no error occur ; Saves: ; Inputs:\tbp_seg (ES)\t= device driver routine segment ;\t\tbp_offset (BX)\t= device driver routine offset ; Output:\tnone ; Destroy:\tax ; Author:\tKen Chen ; Date: \t06/21/90 ; ; Rev\t| Name\t| Date\t\t| TPR#\t| Description ; ------+-------+---------------+-------+------------------------------------- ; 1.00\t| Ken\t|\t\t| NEW\t| Initial revision ; ;***************************************************************************** SUBF_07 \tPROC\tNEAR \t\tmov\tax,bp_seg \t\tmov\tword ptr ds:fcsegment,ax \t\tmov\tax,bp_offset \t\tmov\tword ptr ds:fcoffset,ax \t\tor\tbyte ptr ds:pdflg_2,ddfcflg \t\tjmp\tsucc_00 \t\t\t; successful SUBF_07 \tENDP ;***************************************************************************** ; Procedure Name:\twait_ack ;\tlong loop to get the mouse response for system's command ; Saves: ; Inputs:\tnone ; Output:\tbp_flag : cf = 0 : no error ;\t\t\t cf = 1 : error ;\t\tbp_errcode (AH) = 00 : no error ;\t\t\t\t= 03 : interface error ;\t\t\t\t= 04 : resend ;\t\tzf = 1 : acknowledge received ;\t\tzf = 0 : error occur ; Destroy:\tax ; Author:\tKen Chen ; Date: \t06/21/90 ; ; Rev\t| Name\t| Date\t\t| TPR#\t| Description ; ------+-------+---------------+-------+------------------------------------- ; 1.00\t| Ken\t| 06/21/90\t| NEW\t| Initial revision ; ;***************************************************************************** WAIT_ACK\tPROC\tNEAR \t\tpush\tcx wait_ack1: \t\txor\tcx,cx wait_oaf_loop: \t\tpush\tcx \t\textrn\tout_aux_full:near \t\tcall\tout_aux_full \t\tpop\tcx \t\tjnz\tshort get_ack \t\tloop\tshort wait_oaf_loop \t\tjmp\tshort wa_error_03\t; time out get_ack: \t\tin\tal,data8042 \t\tcmp\tal,ackcode\t\t; check acknowledge code \t\tje\tshort wa_suc chk_rsnd_code: \t\tcmp\tal,rscode\t\t; check resend code \t\tjne\tshort chk_error_code \t\tmov\tbp_errcode,04 \t\tjmp\tshort wa_error chk_error_code: wa_error_03: \t\tmov\tbp_errcode,03 wa_error: \t\tand\tbyte ptr ds:pdflg_1,0f0h \t\tor\tbp_flag,01\t\t; set carry flag \t\tjmp\tshort wa_ret wa_suc: \t\tmov\tbp_errcode,00 \t\tand\tbp_flag,0fffeh\t\t; clear carry flag wa_ret: \t\tpop\tcx \t\tor\tbp_errcode,0\t\t; affect ZF \t\tret WAIT_ACK\tENDP ;***************************************************************************** ; Procedure Name:\tget_data ;\treceive data from mouse if Auxiliary device Output Buffer Full ; Saves: ; Inputs:\tnone ; Output:\tzf = 1 : no data received ;\t\tzf = 0 : successful ;\t\t\tal = data byte received ; Destroy:\tah ; Author:\tKen Chen ; Date: \t06/21/90 ; ; Rev\t| Name\t| Date\t\t| TPR#\t| Description ; ------+-------+---------------+-------+------------------------------------- ; 1.00\t| Ken\t| 06/21/90\t| NEW\t| Initial revision ; ;***************************************************************************** GET_DATA\tPROC\tNEAR \t\tpush\tcx \t\txor\tcx,cx gd_loop: \t\tpush\tcx \t\tcall\tout_aux_full\t\t; check AOBF \t\tpop\tcx \t\tjnz\tshort receive_data \t\tloop\tshort gd_loop \t\tjmp\tshort gd_ret receive_data: \t\tin\tal,data8042 gd_ret: \t\tpop\tcx \t\tret GET_DATA\tENDP endif\t;NO_PS2_MOUSE_SUPPORT Нужно еще размаскировать вход 8259 и поставить новый вектор (mouse.asm). datasheet-ы посмотрю. |
Rio444
Гость
Откуда: Ростов-на-Дону Всего сообщений: 8632 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 14 сен. 2014 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 15 октября 2017 20:45 Сообщение отредактировано: 15 октября 2017 20:48
i8088, круто! Откуда исходники? Посоветуйте хорошую книгу по программированию на ассемблере. В частности, чтобы было рассказано, как писать TSR программы. |
i8088
Advanced Member
Откуда: г. Баку, Азербайджан Всего сообщений: 2132 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 30 янв. 2015 |
Я их нашел в свободном доступе уже не помню где Вот ссылки https://yadi.sk/d/_Z5f_1AO3Nmihf https://yadi.sk/d/GYol8Y5_3NmiXg Книга по программированию мне больше всего нравится Джордейна Справочник Программиста Персональных компьютеров типа IBM PC XT и AT И Нортона - Персональный Компьютер фирмы IBM и Операционная система MS-DOS (в ней правда про TSR мало). Книга Лео Скенлона Програмирование на языке Ассемблера (там про TSR тоже правда нет) Книги мои бумажные, но найти в сети я думаю можно PS. Мышиный вопрос меня озадачил, не думал что такие сложности там. Как говорится - век живи век учись, а помирать все равно дураком |
Mihail1810
Advanced Member
Откуда: Екатеринбург Всего сообщений: 1565 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 8 дек. 2014 |
Господа, если все так сложно, не проще сделать com-ps2 конвертер и не париться? Вот тут все есть - http://www.vogons.org/viewtopic.php?f=46&t=42862 |
<<Назад Вперед>> | Страницы: 1 2 * 3 4 5 6 .. 12 13 14 15 16 17 | Печать |
Полигон-2 » IBM PC-совместимое. До 2000 года включительно » Переделка АТ интерфейса клавиатуры в PS/2 на старых платах |
0 посетителей просмотрели эту тему за последние 15 минут |
В том числе: 0 гостей, 0 скрытых пользователей |
Последние | |
[Москва] LIQUID-Акция. Сливаются разъемы CF МС7004 и 7004А на AT и XT Пайка термотрубок Проммать s478 PEAK 715VL2-HT ( Full-Size SBC) Подскажите по 386 материке по джамперам. |
Самые активные 5 тем | |