|
|
Мышь в Орионе, выверено адреса, коды
драйвер, как подключить к Орион-128
Mouse
and Orion-128, сборка платы на 04/04/2026.
Куплю
приобрету платы и наборы микросхем, куплю микросхемы
Запчасти
для ПК Орион-128
Дата обновления информации:
04.04.2026
Предыстория мышки
На 04/04/2026 инфа мышь работает,
платки Сергея из Питера (https://dzen.ru/a/aZHnOQsrKFbpWl9g)

Собран контроллер мыши для Ориона-128
Скачать демо
Скачать схему в *.pdf
Скачать
прошивку
Ссылаться я буду на исходный текст драйвера, который мне предоставил
его автор Алексей Михайлов, которого я упоминал в первой статье. Рекомендую
статью к прочтению, а также скачать по приведённой в ней ссылке исходные
тексты.
Условно драйвер делится на три составляющих: опрос микроконтроллера и
получение координат и состояние кнопок мыши, стирание изображения под
указателем и сохранение его во временный буфер и рисование самого указателя,
изображение которого, кстати говоря, уже из своей программы можно менять на
лету. Для этого предусмотрен буфер CIMG.
Для работы драйвера необходимо последовательно вызывать процедуры MOUSE,
CURCR и CURSET. Может это было сделано для гибкости, может ещё для чего-то,
но попытка запихнуть все три процедуры в одну успехом не увенчалась, так как
там всё переплетено и ссылается друг на друга крест накрест.
Прежде всего я упорядочил список переменных, которых оказалось аж целых 17
штук!

И, конечно же, они привязаны к конкретному участку памяти.
Одна переменная в исходном тексте и вовсе не используется. Это MOYES. Её я
пока трогать не стал. Возможно, она ранее использовалась для определения
наличия мыши как устройства, а потом автор решил её исключить, но имя
осталось.
Изначально драйвер представлял из себя сборку драйвер+демо. Демонстрационную
часть я вырезал и оставил только сам драйвер, дописал четыре переменные с
удобочитаемыми именами для доступа к координатам XY, кнопкам и колесу.
Также заменил команды вида MVI A,000H на XRA A, которые не намного, но
сократили размер драйвера. Немного структурировал текст, он стал нормально
читаем. В результате получилась одна точка входа из основной программы: CALL
MOUSE.
Внутри этого вызова содержится очистка места под указателем и рисование
самого указателя.
Также в драйвер добавил определение наличия мышки. Если мышь отсутствует, то
происходит возврат в основную программу и указатель на экране не
отображается. Для этого служит переменна MO_OK. Содержимое 0FFH говорит об
отсутствии контроллера мыши.

Переписанный и дополненный драйвер может подключаться к головному исходному
тексту как вставленный текст, либо как библиотека. Это на усмотрение
программиста. Предпочтительно второе. При этом никаких дополнительных правок
вносить в текст драйвера не нужно.
Написал простую программу, в которой будет работать мышь.
ORG 0
START:
CALL MOUSE
JMP START
INCL MODRV.AS
Но работа этого варианта драйвера мне не понравилась. После запуска на
экране появилась стрелочка и можно было двигать мышку. Но код настолько
расписан "лапшой" (да простит меня автор за критику), что всё работало очень
нестабильно и пытаться отладить что-то было весьма сложно. В итоге вся
часть, касающаяся отображения указателя, была выброшена и заменена кодом
Дениса Соловьёва (автор ОС DSDOS). В свою очередь я добавил в драйвер
небольшое улучшение, ограничивающее указатель в пределах экрана, а также
точки входа для получения текущих координат по осям XY, состояний кнопок и
направления вращения колеса. В результате от прежнего драйвера осталось
только чтение состояния контроллера и определение типа процессора (Z80 и
КР580ВМ80А читают данные по-разному). В результате после применения нового
варианта драйвера, мне всё понравилось. Вот так выглядит старт
демо-программы с новым драйвером, написанной выше:

После старта драйвера в центре появляется указатель (все вспомнили Windows??)
и можно двигать мышку. Указатель иногда появляется не в центре экрана
(виноваты инопланетяне ??). Но ведь нужно ещё нажимать кнопки и крутить
колесо!
Для этого добавим ещё несколько строк. И помогут нам в этом переменные MO_K
и MO_W. А также добавим переменные MO_X и MO_Y, которые будут отображать
текущие координаты на экране.
Координату X считываем командой LHLD MO_X, а координата Y командой LDA MO_Y.
Состояния кнопок и колеса соответственно LDA MO_K и LDA MO_W.

Теперь основной цикл программы выглядит так:
И запускаем!

Перемещая мышь видим показания. Первые 3 байта это положение по оси X и Y,
начало координат от левого верхнего угла. Четвёртый и пятый байты состояния
нажатия кнопок и направление вращения колеса. Выход из программы - ESC. Если
контроллер мыши не установлен, то экран будет пуст, но выход через
клавиатуру будет доступен.
Итак, резюмируем.
Вызов - CALL MOUSE.
MO_OK - переменная наличия контроллера мыши. Значение 0FFH - мыши нет.
Буфер CIMG - можно грузить свой спрайт указателя (рисунок сверху вниз).
MO_X и MO_Y - переменные с координатами XY в HEX-виде.
MO_K и MO_W - переменные состояний кнопок и колеса в HEX-виде.
16/03/2026 Приехали платки

Контроллер мышки 28/02/2026 заказали платы и вперед

Эскиз контроллера Мышки
Предыстория мышки
Сергей из Питера, развел платку, сделал драйвер и поддержку ПО,
разобрал все по байтикам, пришли к единому адресному пространству
Скачать схему в *.pdf
Схема подключения мышки к Ориону128 ps/2
Скачать прошивку
Теперь только остается не лениться и писать программы
Мультимедиа
клавиатура РК86+IBM на кнопках
"Черри"
Клавиатура
РК86
Как подключить мышь по
журналу "Радиолюбитель"
Интересуют микросхемы на Орион-125, КР565РУ5В,
КР565ру7В, к565ру5г AU, к565ру7г Au
в позолоте и вникеле, также серия к580
Полезные и интересные статьи
На предыдущую страницу
На главную страницу На следующую
страницу
|
|