Hacker
#07
10 марта 1997 |
|
Кемpstоn Моusе Intеrfасе - схема из Спектрофона.
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 должны щелкаться три младших битика при нажатии кнопочек. ----------------------------------------------------------------
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября