Kempston Mouse Interface. .ЖЕЛЕЗО
Нижеследующий тескст был жестоко выдран из некого журнала
SPECTR0F0N, так как схема нарисована действительно корректно и
нормально.
DD1 DDS
5┌──┬──┬─┐ б 2┌──┬──┬─┐18 D0
┌────оСа│СТ│0├────────┤D1│|>│1├─────╢
ХЬ ─┴─ 15├──┤ │ │11 4│ │ │ │1б D1║
──┬──────/С │ │1├────────┤D2│ │2├─────╢
Ха │ 10│ │ │ │14 б│ │ │ │14 D2║
───┬─────┤U/D │2├────────┤D3│ │3├─────╢
││ 9├──┤ │ │2 8│ │ │ │12 D3║
││ ┌───┤R │ │3├────────┤D4│ │4├─────╢
││ │ 1│ │ │ │ 11│ │ │ │9 D4║
││ ├───┤S │ │ │ ┌─────┤D5│ │5├─────╢
││─┴─ 4│ │ │ │ │ 13│ │ │ │7 D5║
││ ──┤0 │ │ │ │┌────┤Dб│ │б├─────╢
││ 12│ │ │ │ ││ 15│ │ │ │5 Dб║
││ ──┤1 │ │ │ ││┌───┤D7│ │7├─────╢
││ 13│ │ │ │ │││ 17│ │ │ │3 D7║
││ ──┤2 │ │ │ │││┌──┤D8│ │8├─────╢
││ 3│ │ ├─┤7 ││││19├──┤ │ │ ║
││ ──┤3 │ │Со─┐││││┌─оЕ2│ │ │ ║
││ └──┴──┴─┘ ││││││1│ │ │ │ ║
││ ┌────────────┘││││├─оЕ1│ │ │ ║
││ │ DD2 │││││ └──┴──┴─┘ ║
││ │ 5┌──┬──┬─┐б │││││ /XCS ║
││ └──оСа│СТ│0├──┘│││└──── ║
││ 15├──┤ │ │11 │││ ║
└──────/С │ │1├───┘││ ║
│ 10│ │ │ │14 ││ ║
└─────┤U/D │2├────┘│ ║
9├──┤ │ │2 │ ║
┌───┤R │ │3├─────┘ ║
│ 1│ │ │ │ ║
├───┤S │ │ │ ║
─┴─ 4│ │ │ │ ║
──┤0 │ │ │ ║
12│ │ │ │ ║
──┤1 │ │ │ ║
13│ │ │ │ ║
──┤2 │ │ │ ║
3│ │ ├─┤7 ║
──┤3 │ │Со── ║
└──┴──┴─┘ ║
DDЗ DDб ║
5┌──┬──┬─┐б 2┌──┬──┬─┐18 D0║
┌────оСа│СТ│0├────────┤D1│|>│1├─────╢
Уа ─┴─ 15├──┤ │ │11 4│ │ │ │1б D1║
──┬──────/С │ │1├────────┤D2│ │2├─────╢
Yb │ 10│ │ │ │14 б│ │ │ │14 D2║
───┬─────┤U/D │2├────────┤D3│ │3├─────╢
││ 9├──┤ │ │2 8│ │ │ │12 D3║
││ ┌───┤R │ │3├────────┤D4│ │4├─────╢
││ │ 1│ │ │ │ 11│ │ │ │ 9 D4║
││ ├───┤S │ │ │ ┌─────┤D5│ │5├─────╢
││─┴─ 4│ │ │ │ │ 13│ │ │ │ 7 D5║
││ ──┤0 │ │ │ │┌────┤Dб│ │б├─────╢
││ 12│ │ │ │ ││ 15│ │ │ │ 5 Dб║
││ ──┤1 │ │ │ ││┌───┤D7│ │7├─────╢
││ 13│ │ │ │ │││ 17│ │ │ │ 3 D7║
││ ──┤2 │ │ │ │││┌──┤D8│ │8├─────╢
││ 3│ │ ├─┤7 ││││19├──┤ │ │ ║
││ ──┤3 │ │Со─┐││││┌─оЕ2│ │ │ ║
││ └──┴──┴─┘ ││││││1│ │ │ │ ║
││ ┌─────────────┘││││├─оЕ1│ │ │ ║
││ │ DDЧ │││││ └──┴──┴─┘ ║
││ │ 5┌──┬──┬─┐б │││││ /YCS ║
││ └───оСа│СТ│0├──┘│││└────── ║
││ 15├──┤ │ │11 │││ ║
└──────/С │ │1├───┘││ ╔══════════════╝
│ 10│ │ │ │14 ││ ║
└─────┤U/D │2├────┘│ ║
9├──┤ │ │2 │ ║
┌───┤R │ │3├─────┘ ║
│ 1│ │ │ │ ║
├───┤S │ │ │ ║
─┴─ 4│ │ │ │ ║
──┤0 │ │ │ ║
12│ │ │ │ ║
──┤1 │ │ │ ║
13│ │ │ │ ║
──┤2 │ │ │ ║
3│ │ ├─┤7 ║
──┤3 │ │Со── ║
└──┴──┴─┘ ║
╔════╝
DD7.2 ║ DD8
RIGHB 5┌─┬──┐б D0║А10 1┌─┬──┬─┐15
─────────┤D│|>├─────╫─────┤1│DC│0о──
4│ │ │ ║А8 2│ │ │ │14
┌──оЕ│ │ ║─────┤2│ │1о──
│ └─┴──┘ ║А7 3│ │ │ │13
│ DD7.3 ║─────┤4│ │2о──
LEFTB │ 9┌─┬──┐8 D1║/RD 5├─┤ │ │12
─────────┤D│|>├─────╫─────о&│ │3о──
│10│ │ │ ║А0 б│ │ │ │11 /BCS
├──оЕ│ │ ║─────┤ │ │4о───────
│ └─┴──┘ ║ 4│ │ │ │10
│ DD7.4 ║ ┌──oS│ │5о──
MIDLB │12┌─┬──┐11 D2║ │ │ │ │ │9 /XCS
─────────┤D│|>├─────╢ │ │ │ │бо───────
│13│ │ │ ║ │ │ │ │ │7 /YCS
├──оЕ│ │ ║ │ │ │ │7о───────
│ └─┴──┘ ║ │ └─┴──┴─┘
│ ║ └────────────┐
│ /BCS ║ DD7.1 │
└──────── ║/IORQ 2┌─┬──┐3 │
║───────┤D│|>├──┘
DD1..DDЧ - КSб1ИЕ11 ║А5 1│ │ │
DDS, DDб - К5SSАПS ║───────оЕ│ │
DD7 - К1SSЛП8 ║ └─┴──┘
DD8 - К5SSИД7 ║
----------------------------------------------------------------
Примечания:
- жирной линией обозначена шина Spectrum;
- на мышь идут следующие сигналы: Ха, ХЬ, Уа, Yb, RIGHTB, MIDLB,
LEFTB, +5V, GND;
- /BCS, /XCS, /YCS - внутренние сигналы схемы, соединяются с
одноименными парными на схеме;
- схема приведена для мыши пассивного типа (мышь для "Поиска"
ММП-9В), для других необходимо вывести сигналы Ха, ХЬ и Уа,
Yb, которые берутся с оптопар после цепочки транзистор-триггер
Шмидта;
- в компьютере требуется обеспечить блокировку порта ODFh;
- возможна замена схемы дешифрации (DD7.1, DD8) на ПЛМ-ку типа
55бPТЧ (РТ11), оставшийся свободный выход может использоваться
для блокировки портов.
Если у вас есть пожелания/нарекания, вопросы/идеи, то вы можете
связаться с автором схемы Михаилом Кондратьевым.
Michael Kondratyev: 2:5030/3б2.1@FidoNet
Итак, теперь поясним, каким образом работать с Kempston Mouse
Interface программисту. Ничего сложного для понимания не
предвидится, поскольку интерфейс довольно прост и понятен.
Имеются три порта, вот их адреса: #FADF, #FBDF, #FFDF;
разрядность каждого - 8 битов, т.е. байт.
#FADF - порт кнопок, значащими в нем являются младшие три бита:
0 бит - состояние правой кнопки;
1 бит - состояние левой кнопки;
2 бит - состояние средней кнопки.
При ненажатых кнопках все биты в '1'. При нажатии на кнопку
соответствующий бит устанавливается в '0'.
По старинной традиции левая кнопка используется как выбор
(Fire), правая - как отмена (Cancel). Среднюю кнопку принято
использовать для дополнительных функций.
#FBDF - порт Х-координаты;
#FFDF - порт У-координаты.
По мере передвижения мышь-манипулятора значения в портах
изменяются, причем еще и циклически, т.е. при достижении #FF и
дальшейшем увеличении становятся снова нулем и растут далее,
опять до #FF. При движении в другую сторону картина аналогичная,
только изменения происходят в обратном направлении.
Представить это дело поможет вот такая картинка:
у^
│.
│2
│1
│012..
┼─────────> х
Таким образом, необходимо считывать значения портов, и по
разнице между текущим и предыдущим значением определяется
направление перемешения мышки.
При необходимости очень точных манипуляций драйвер пишется с
учетом этого, и перемещение стрелочки на одну точку производится
при изменении значения, считанного из порта на 2, 3, 5, или
более единиц.
В последнее время стал модным более умный драйвер, который в
начале ждет нажатия на кнопку, и первая нажатая кнопка на мышке
становится (для драйвера) левой. Сие относится только к двум
крайним кнопкам, средняя кнопка - она и в Африке средняя. Это
полезно для людей, привыкших держать мышь в левой руке, или на
тот случай, если кто-то часто наступал на вашу мышь и одна из
кнопок у нее работает хуже, чем остальные. Такой драйвер
считается хорошим тоном. И если вы заметили, именно так
поступает драйвер ZX-Format'а.
Проверить работу только-что собранного интерфейса можно прямо
из Basic'а, делая PRINT IN из портов: б4479 - Х, б5503 - Y - при
перемещении мыши значения должны изменяться циклически. При
чтении из порта б4423 - Fire должны щелкаться три младших битика
при нажатии кнопочек.
----------------------------------------------------------------
Other articles: