ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Speccy-2007 128/AY/TR-DOS
Сайт с документацией к "Scorpion ZS 256"
По клавиатуре, в проекте используется модуль ps2_keyboard у которого есть такие интересные выходы:
rx_extended,
rx_released,
rx_shift_key_on,
rx_data_ready
Нука напомните кто там что хотел![]()
Последний раз редактировалось Keeper; 10.07.2010 в 00:23.
Я тут нашел следующее по адресу: http://kazus.ru/articles/18.html
"Комбинации клавиш с Shift, Alt и Ctrl передаются как последовательность двух скан-кодов. С точки зрения контроллера эти клавиши ничем не отличаются от всех остальных. Точно так же на аппаратном уровне не различаются режими Num Lock и Caps Lock - они различаются на программном уровне программой, которая обслуживает прерывания от клавиатуры.
Коротко хочу остановиться на реализации режима автоповтора. Как правило функции автоповтора возлагаются на саму клавиатуру - через определенное время, если клавиша не отпущена, то клавиатура посылает еще один точно такой же скан-код. Если в это время нажать еще одну клавишу, то к контроллеру "полетит" уже другой скан-код и будет считаться, что нажата только одна клавиша. В играх эта проблема решена элементарно - клавиша считается нажатой, пока не прийдет соответствующий скан-код с префиксом 0F0h."
Если ты чего-то не знаешь, то это не значит, что этого не может быть.
Об этом и речь. Что вариант "нажали Ctrl - отпустили - нажали С - отпустили" в текущей реализации получается эквивалентен "нажали Ctrl - нажали С - отпустили - отпустили" и оба раза реализуется в последовательную трансляцию кодов "Ctrl " и "С". Т.е. драйверу никак не понять одновременно нажаты эти кнопки или последовтельно. А если лазать за этим разъяснением в порт f40х, так уже готовый драйвер есть для этого порта, без всяких дополнительных клавиатурных извратов.
Т.е. я - за порт PS2, но думаю его придется серьезно доделывать. Пускай и после писалки на SD.Простейший вариант что приходит на ум - допонительно как-то транслировать и коды отпускания клавишь.
Соответствие кнопок в эмуляторе (RK=PC):
УСТ = Home
ПС = End
СТР = Ins
ЗБ = BackSpace
AP2 = Esc
F1..F5 = F1..F5
Ctrl+G = Del
Ctrl+R = PgUp
Ctrl+C = PgDown
РусLat = F8=F9=Scroll (смотря как настроено в настройках эмулятора на закладке "keyboard")
C учетом "TurboPascal-style"-расширителя (включается в настройках эмулятора на закладке "keyboard") добавляются PC-комбинации Ctrl+кнопка для курсорных и фукциональных кнопок, которые транслируются Ориону в "CTRL-Q-кнопка"-сочетания. За соответствием (если кому-то нужно, в чем я по правде сказать - сомневаюсь) - добро пожаловать в исходники (mod8255.pas).
Последний раз редактировалось Error404; 10.07.2010 в 09:59.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Спокойно, без паники! Думаю, ты не правильно интерпретировал (возможно не понял) приведенную мною выдержку. Будешь ты нажимать последовательно или одновременно клавиши CTRL+C, клавиатура выдаст два скан-кода один за другим, а значит будет два прерывания подряд. Аналогично при нажатии трех клавиш! По получении скан-кода 14Н (Ctrl(L)) - поднимается (в драйвере) программный флаг, а затем по получении скан-кода 21Н (С) принимается решение. Только перед этим следует проверить не появился ли код F0+14H (тоже будет прерывание по отпусканию клавиши (Ctrl(L)), т.е. проверяем ситуацию, когда нажали и отпустили клавишу Ctrl, так и не нажав еще что-то. И так далее! Что здесь сложного?
Сейчас уже абсолютно понятно, что от клавиатуры PS/2 необходимо принимать два байта, иначе не определить в каком состоянии клавиша - нажата или отпущена. Остальное все делается в драйвере.
При старте Монитора (и после Ресет) все прерывания должны быть выключены. Далее, когда идет инициализация Монитора - настраиваются и вектора прерываний. Единственное, что меня волнует в этом вопросе - это поведение при вложенных прерываниях от разных векторов. Как будет вести себя контроллер прерываний, и насколько правильно мы определили приоритеты векторов.
Я почему так активно защищаю наличие прерывания от PS/2-клавиатуры? Меня всегда убивало на Орионе то, что запустив какую-то программу, она начинает, временами, "жить" сама по себе не реагирую на клавиши - потому что "не желает" обращаться к клавиатуре. И без Ресет с этой унизительной ситуацией не справиться! Такого безобразия нет на ПС! Там есть три заветные клавиши (на крайний случай!), которые в 99% случаев возьмут ситуацию под контроль. Мне хочется, чтобы так было и на Орионе.
P.S. Спасибо за "Соответствие кнопок в эмуляторе (RK=PC)"!
---------- Post added at 16:41 ---------- Previous post was at 15:24 ----------
Коллега! А можно менее загадочно?
Последний раз редактировалось pvlad; 10.07.2010 в 15:28.
Если ты чего-то не знаешь, то это не значит, что этого не может быть.
В общем, пока не смог заставить часы работать. Сейчас отпинаю плату ногами и постучу кувалдой, может заработает.
ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Speccy-2007 128/AY/TR-DOS
Сайт с документацией к "Scorpion ZS 256"
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
По моему молчанию можно понять, что симулятор ничего не показывает. с тех самых пор, как в проект добавляется ончипПЗУ, для симулятора ядро процессора отсутствует.
Интел-шина также не работает.
Пока экспериментирую с тактировкой проца, удалось уменьшить вдвое время доступа для видеоконтроллера.
ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Speccy-2007 128/AY/TR-DOS
Сайт с документацией к "Scorpion ZS 256"
С часами пока глухо, отвлекся на причесывание версии 05.
Теперь за один такт клока читаются два адреса ОЗУ.
Шины соответственно несколько разгрузились от посягательств видеоконтроллера.
Маленько разогнал процик.
Раз по 10 прогнал запуск СР/М в разных турборежимах.
Доволен как слон
П.С. может плюнем на 512ВИ1 и пересядем на PCF8583? Дрова часов в СР/М придется переписывать под I2C... На Скорпионе это работает применительно к NVRAM 24С16, исходники драйвера есть. А Т80 вероятно все же маленько отличается по времянкам от Z80, 512ВИ1 не хочет дружить. Завтра продолжу.
ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Speccy-2007 128/AY/TR-DOS
Сайт с документацией к "Scorpion ZS 256"
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)