Внимание! Это временный неофициальный архив старой версии форума Полигон Призраков, созданный сочувствующим форуму участником. Этот сайт просуществует лишь до тех пор, пока администрация Полигона не сдержит своё обещание и не откроет официальный архив по адресу old.sannata.org.

Полигон-2

Форум о старых компьютерах

Объявление форума

Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС.

Полигон-2 »   IBM PC-совместимое. До 2000 года включительно »   Переделка АТ интерфейса клавиатуры в PS/2 на старых платах
RSS

Переделка АТ интерфейса клавиатуры в PS/2 на старых платах

Уровня 386-х, 486-х, чтобы можно было подключить PS/2 мышь.

<<Назад  Вперед>> Страницы: 1 2 3 4 5 6 7 * 8 9 10 11 12 13 14 15 16 17
Печать
 
Кай
Гость
Divine Assassin

Откуда: извне (from beyond)
Всего сообщений: 13709
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
8 авг. 2010
[q]
Извините за формат - тегов CODE что-то не вижу на форуме...
[/q]
{code}


WAITF  PROC  NEAR  ; FIXED TIME WAIT ROUTINE HARDWARE CONTROLLED - NOT PROCESSOR
; ENTRY:
; (CX) = COUNT OF 15.085737 MICROSECOND INTERVALS TO WAIT
; MEMORY REFRESH TIMER 1 OUTPUT AT THE DMA CHANNEL 0 ADDRESS REGISTER USED AS REFERENCE.

REM Oни есть. Но их нужно вводить ручками.

{/code}

Соотв. фигурные скобки меняем на квадратные. :)
Rio444
Гость


Откуда: Ростов-на-Дону
Всего сообщений: 8632
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
14 сен. 2014
justontime, большое спасибо!
Буду разбираться.
i8088
Advanced Member


Откуда: г. Баку, Азербайджан
Всего сообщений: 2132
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 янв. 2015
justontime, этот код для XT, но в AT машинах канал DMA0 освободился от функции регенерации памяти.
Соответственно, для требуемой нам AT читать DMA регистры уже не годится.
А во всех ли интересующих нас AT (286-486) канал 0 канал 1 8253 (с DMA он уже не связан) настроен на период 15мкс,
чтобы можно было его использовать? Надо будет проверить.

upd
Исправил, напутал номер канала 8253
justontime
Full Member


Откуда: СПб
Всего сообщений: 236
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
10 сен. 2016
i8088 написал:
[q]
но в AT машинах
[/q]
А, я просто неправильно понял проблему - думал, что речь идет только о решении для совсем старых машин PC/XT класса...
Rio444
Гость


Откуда: Ростов-на-Дону
Всего сообщений: 8632
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
14 сен. 2014
Приоритетно для машин 286, 386, 486-х.
Если заработает на XT - не страшно, но и не принципиально.
Для пентиумов не нужно, для них материнка без поддержки PS/2 - экзотика.

Вообще, первая мысль была - использовать тупой цикл, со счетчиком.
Вопрос только, где брать начальное значение счетчика? Оно будет зависеть от скорости процессора.
Это начальное значение можно считать на этапе инициализации (т.е. только один раз).
Но нужен какой-то таймер, который работает на всех вышеуказанных машинах, и работает одинаково.
Возможно ли использовать канал 0, таймера 8253/8254 (он же - системный таймер)? Только не ждать, когда он "тикнет", а прочитать содержимое счетчика и подождать, когда оно уменьшится на 18 (см. выше пост pahan) - это и будут требуемые ~15мкс.
i8088
Advanced Member


Откуда: г. Баку, Азербайджан
Всего сообщений: 2132
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 янв. 2015
Rio444 написал:
[q]
Если заработает на XT - не страшно, но и не принципиально.
[/q]
На XT не заработает - там нет 8042 вообще.


Rio444 написал:
[q]
Возможно ли использовать канал 0, таймера 8253/8254 (он же - системный таймер)? Только не ждать, когда он "тикнет", а прочитать содержимое счетчика и подождать, когда оно уменьшится на 18 (см. выше пост pahan) - это и будут требуемые ~15мкс.
[/q]
Канал 0 слишком медленно настроен (коэфф деления 65536), 1 тик ~54.9ms

Канал 1 подходит, но надо проверить, на всех ли 286-486 AT машинах его настройка одинакова? Если на всех машинах он настроен на 0x12h, то как раз один тик ~15mks
Rio444
Гость


Откуда: Ростов-на-Дону
Всего сообщений: 8632
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
14 сен. 2014
i8088 написал:
[q]
Канал 0 слишком медленно настроен (коэфф деления 65536), 1 тик ~54.9ms
[/q]
Rio444 написал:
[q]
Только не ждать, когда он "тикнет", а прочитать содержимое счетчика и подождать, когда оно уменьшится на 18 (см. выше пост pahan) - это и будут требуемые ~15мкс.
[/q]
i8088
Advanced Member


Откуда: г. Баку, Азербайджан
Всего сообщений: 2132
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 янв. 2015
Rio444, OK, я чего-то не сообразил сразу.
Приношу свои извинения!
Rio444
Гость


Откуда: Ростов-на-Дону
Всего сообщений: 8632
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
14 сен. 2014
i8088, извинения излишни. :)
Значения счетчика из таймера можно читать непосредственно?
in al, 040h ?
Ничего не собьётся? Всегда ли он работает?
Нужно ли предварительно делать "Access mode" = lobyte only ?
[q]
Bits Usage
6 and 7 Select channel :
0 0 = Channel 0
0 1 = Channel 1
1 0 = Channel 2
1 1 = Read-back command (8254 only)
4 and 5 Access mode :
0 0 = Latch count value command
0 1 = Access mode: lobyte only
1 0 = Access mode: hibyte only
1 1 = Access mode: lobyte/hibyte
1 to 3 Operating mode :
0 0 0 = Mode 0 (interrupt on terminal count)
0 0 1 = Mode 1 (hardware re-triggerable one-shot)
0 1 0 = Mode 2 (rate generator)
0 1 1 = Mode 3 (square wave generator)
1 0 0 = Mode 4 (software triggered strobe)
1 0 1 = Mode 5 (hardware triggered strobe)
1 1 0 = Mode 2 (rate generator, same as 010b)
1 1 1 = Mode 3 (square wave generator, same as 011b)
0 BCD/Binary mode: 0 = 16-bit binary, 1 = four-digit BCD
[/q]
i8088
Advanced Member


Откуда: г. Баку, Азербайджан
Всего сообщений: 2132
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 янв. 2015
По ссылке pahan как раз есть пример, думаю ответы на все Ваши вопросы -да.
[q]
Reading The Current Count
To read the current count using the "lobyte only" or "hibyte only" access modes, you can just do an "in al,0x40" (for PIT channel 0) without problems. For frequencies higher than 4.7 KHz it can be easiest to set the high byte of the reload value to zero, and then use the "lobyte only" access mode to minimize hassles.

For the "lobyte/hibyte" access mode you need to send the latch command (described above) to avoid getting wrong results. If any other code could try set the PIT channel's reload value or read its current count after you've sent the latch command but before you've read the highest 8 bits, then you have to prevent it. Disabling interrupts works for single CPU computers. For example, to read the count of PIT channel 0 you could use something like:
[/q]
Я только рекомендую не использовать 386+ инструкции,
для совместимости с 286.
<<Назад  Вперед>> Страницы: 1 2 3 4 5 6 7 * 8 9 10 11 12 13 14 15 16 17
Печать
Полигон-2 »   IBM PC-совместимое. До 2000 года включительно »   Переделка АТ интерфейса клавиатуры в PS/2 на старых платах
RSS

0 посетителей просмотрели эту тему за последние 15 минут
В том числе: 0 гостей, 0 скрытых пользователей

Последние RSS
[Москва] LIQUID-Акция. Сливаются разъемы CF
МС7004 и 7004А на AT и XT
Пайка термотрубок
Проммать s478 PEAK 715VL2-HT ( Full-Size SBC)
Подскажите по 386 материке по джамперам.

Самые активные 5 тем RSS