-
Джойстик интегрирован в управление, эмуляцией клавиатуры.
Драйвером джойстика читается только порт "0F". Этот вариант программы заточен для .02-го Вектора.
При получении данных о положении джойстика, эти данные преобразуются в код соответствующей клавиши, и вызывается штатная подпрограмма, для помещения кода в буфер, штатными средствами.
Для начала можно пойти тем-же путём, заменив драйвер джойстика на драйвер мыши (эмулирующий джойстик).
И посмотреть на результат.
-
Маловато свободного места в этой программе.
Можно конечно попытаться рассувать драйвер мыши кусками по огрызкам свободного места.
Но для эксперимента по перемещению курсора мышью и такого варианта достаточно. При некоторых действиях драйвер затирается и всё крашится, но представление о юзабельности мыши я получил.
Эмуляция джойстика - не круто :(
А думаю реальным джойстиком рисовать - вообще был гемор...
К сожалению, протокол PS/2 жрёт много ресурсов (времени), и процедуры рисования далеко не скоростные... даже просто при рисовании линий уже заполняется буфер клавиатуры и курсор начинает "блуждать" по экрану со значительным запаздыванием относительно перемещений мыши.
Подозреваю, что использование реальных приращений, а не фиксированного шага, не исправят ситуацию.
-
Может быть все-таки приделать последовательный порт с FIFO, а к нему последовательную мышку? Конвертер из PS/2 в Serial незначительное неудобство по сравнению с реализацией PS/2 битбенгом на 8080. А последовательный порт с FIFO еще много для чего может пригодиться.
-
Кстати, в "PENCIL-DISC" есть глюк, который попал в программу, видимо во время переделки её из ".r00" в ".rom".
В самом начале, вызывается подпрограмма, расположенная по адресу 1A8Ah, но в прерывании ячейки с адресами 1A8Ah и 1A8Bh используются для хранения переменных. И соответственно их значение искажается. При перезапуске программы (сбросом), вызывается эта подпрограмма, но выполняются уже другие инструкции.
-
По поводу затрат времени на получение от мыши данных по протоколу ps/2.
Раньше считал на пальцах, по частотам, но не был уверен в результате.
Сейчас глянул осциллогафом.
В протоколе 5 байт: запрос данных; ответ от мыши, что запрос получен; кнопки; X; Y.
По времени ~6мс ! И это только сам протокол обмена, без учета времени на обработку и преобразование полученных данных.
Если добавить ещё и байт на получение данных колеса прокрутки, будет ~7мс.
Итого из 20мс между прерываниями, 6мс отгрызает мышка... программе остается довольно мало. :(
Да и сам протокол (только подпрограммы записи/чтения) примерно 270 Байт.