Info Guide
#05
30 апреля 2004 |
|
DIY - Приспосабливаем мышь от Amiga к ZX Spectrum.
Amiga mouse for ZX Spectrum Мышкрысизации всех Российских полей... ИСКУССТВА! Посвящается. Данная статья написана по просьбе AlCo. Однако когда-то давно я сам хотел заняться этой проблемой серьезно. В итоге деловой загруженности, эта проблема растянулась на годы несерьезных проб, ошибок, удач и неу- дач. Speccy - не игрушка. Еще в 90-е годы я хотел заняться доку- ментацией своих бумаг на Speccy. Поскольку рассматривал (как и всегда) его не только как игрушку, но и как деловую систему, во- зможности которой меня обычно устраивают. Кроме всяких мелких записей и таблиц,кото- рые я так и не научился нормально релизить на Speccy (необходимо не просто хранение, поиск и калькулятор, но и доступ из других программ - программный, сторонний запрос информации из базы данных, типа как в биб- лиотеку,или оверлей),надо рисовать графику - схемы, планы,виды. Конечно,это не дело с 6912-байтовым экраном, но краткость - сес- тра таланта (не в пример моим статьям), и можно многому научиться на Speccy, в том числе эффективно ВРИСОВЫВАТЬ то, что ника- ким ХРЯКОМ не влезет, в его ТРИПОЛЕЧЕРЕЗ- ВОСЬМИСТРОЧНОБУТНУТЫЙ экран. Теперь для меня это спортивный интерес, только време- ни, как всегда, не хватает. Тогда,в 90-е, я не занимался рисованием из-за времени, начисто отсутствовавшего, и психологического барьера при познавании ассемблера Z80. Проблемы рисования. Фантазии хватает, и всё зависит от нас- троения, иной раз очень охота чего-нибудь изобразить. Но я не мог себе представить, как рисовать в сектор-ограниченных цветах, с кнопочным управлением, или на джойстике. Именно поэтому моя первая официальная кар- тинка была нарисована в X-colore, по счас- тью сборки кодера. Ещё бы: режим точка - цвет, в 8-цветовой палитре Speccy, НИКАКИХ атрибутов, как я это сделал, сам сейчас не пойму, вспоминая, как сидел с линейкой и калькулятором и мерял - плату кодера и его детали.Вот с того момента я официально ри- сую схемы.Фактически технические черно-бе- лые картинки,поэтому атрибуты мне не меша- ют,и,собственно вид управления тоже - схе- мы рисуются более менее стандартным спосо- бом - прямыми линиями. Вообще мне очень нравилось лазить в ART STUDIO, рисовать примитивы,таскать окошки, заливать... Но это было игрой,и серьезно я ничего не рисовал. В то время у меня было черно-белое изображение, хотя было и цвет- ное SECAM, пока в попытке повышения качес- тва я этот SECAM не разворотил. Но тогда наличие/отсутствие цветов меня не сильно смущало,иначе я свалил бы со Speccy. Рисо- вать художественные картинки мешали, в ос- новном,атрибуты. Но иногда хотелось просто что-либо изобразить и, разумеется, на пути к этому стоял интерфейс #FE. Вместо того чтобы привычным движением руки провести кривую на экране, много времени уходит на интерполяцию - перекоординацию. Проблемы выбора. Часто бывая у Dave, я с завистью наблю- дал, как легко он проводит линии или обво- дит контуры мышой на Амиге. Я слышал про разные мышиные схемы Speccy, но меня оста- навливал принцип надежности.Мне нужен пре- жде всего надежный комп,который всегда го- тов к работе и который можно не выключать подряд несколько дней.Именно поэтому,полу- чив от Steve по наследству его Pentagon, я обкондерил и пропаял его конкретно, и обе- спечил его PC-шным блоком питания, сетевым фильтром и бесперебойником. Я ненавижу эти тонкие дорожки,и не хочу наворачивать свой Speccy до глючного состояния, но,поддержи- вая прогресс, вижу для себя один путь: са- мостоятельное проектирование и вырезание плат универсального,модульного Speccy. Ко- нечно, это очень сложно,но надежно. Я знаю про AY-мышь, она,конечно не жрет шину данных, но у меня плата AY (с кемпс- тон-джойстиком) стоит в панельке Z80, и доступ к ней осложнен дисководом, а вешать поверх схему мыши слишком неудобно и нена- дежно. Компромисс. Стремление хоть как-то очеловечить ри- сование привело к тому, что я пробовал ре- ализовать световое перо.Вообще это реально на 2 транзисторах (всего деталей 10 где- то), с подстройкой чуствительности. Сигнал - 2 бита - подавал через Kempston Joystick ( 1 бит от кнопки, расположенной на пере). Конечно,программу писал сам,на ассемблере. Это очень интересная задача, рекомендую по настроению.Приемлемую программу я не напи- сал, но это вполне реально. Перо не терпит динамику, надо аккуратно, плавно рисовать. Это прикольно и как-то необычно,и хотя пе- ро - очень естественный метод - от руки, - неудобно стоять перед экраном, а издалека почти невозможно рисовать: слишком сложно. Для кого-то это компромисс, но думаю, что перо хорошо подходит для световых игр,хотя я их на Speccy не видел. У кого появился интерес к этой теме - рекомендую попробо- вать заняться,может,что хорошее получится, но делайте универсально по порту и битам. Amiga. Когда (когда это было...) у меня побы- вала AMIGA 600, я не смог полностью оце- нить мышиный рулез, т.к. мыши как таковой просто не было. Пользовался джойстиком от приставки SEGA. Но уже тогда я отметил для себя интересную особенность: высокотехно- логичный комп использует простейший метод управления - все 4 бита с оптики передают- ся в игровой порт, вместо битов крестика. Просто, дешево и надежно (хорошие провода служат очень долго). Такой принцип объясним,и ему изначально следовали создатели Амиги. Уже тогда я по- думывал над таким же точно релизом мышки на Speccy, через его стандартный игровой порт #1F, т.е.кемпстон-джойстик.Плюсы были явные: единый стандарт мышки Амиги, порта Speccy и бит управления; никакой лишней схемотехнической городьбы не нужно, разве что вывести технологическое питание (оно у меня уже было - 5В через резистор 2 Ома на простой винтик в пластмассовом корпусе ко- мпа:нужно питание - прижал гайкой провод,и все).Надежность компа останется на прежнем уровне,фактически нужна только мышь. Коне- чно,недостатки явные - никакой программной поддержки не было,все время процессора уй- дет на опрос порта. Но в частном случае - вполне нормально.Ведь известно,что больши- нство отличных художественных картинок ри- суется от руки - большую часть времени бу- квально по точкам. Страсть по логическим уровням. Поскольку у моего Speccy был Kempston Joystick, причем полный и с инверсией (бу- фер К555АП3 ), это давало общий провод - минус, т.е.активному состоянию битов порта #1F (единицам), соответствовали логические 0 на входах - замыкание входов на минус. Когда-то давно я считал логическую единицу активным состоянием любого сигнала, психо- логически это верно (по типу 0 - ничто, а единица - уже что-то).Еще на 48 Speccy ме- ня смущал общий плюс на кемпстон-джойсти- ке: у остальных гнезд компа был общий ми- нус. Был риск замыкания,я впаял 100 Ом для защиты и не задумался над этим неудобным казусом, а сейчас я поставил бы инвертор. ( К561ЛН2 - выгодней, чем транзисторы.) Нельзя путать логику с физикой. Вся 5- вольтовая логика построена на активном ну- ле. Исходное состояние свободного входа - 1, т.к.ток через него отсутствует, а при 0 (замыкании входа на минус) значительный входной ток АКТИВНО участвует в переключе- нии логики. Поэтому выходной 0 гораздо си- льнее 1. (Для серии К555 "0" нормируется до 8 мА,а "1" - всего до 0.4 мА нагрузки). В идеале все входные сигналы должны быть активны по 0, т.е.в исходном состоянии по- двешиваться к плюсу резисторами (оптималь- но 5 - 10 кОм), а в активном - замыкаться на минус. Тогда минус будет общим проводом компа для всех его сигналов. Минус используется для экранирования от помех и идеален как общий провод. К сожалению, логических ком- мутаторов с инверсией очень мало,и не все- гда можно достать К555АП3 - полный аналог АП5, но с инверсией выходов. Если собирае- тесь ставить себе Kempston Joystick, лучше заказать К555АП3. У кого АП5, лучше заме- ните на АП3. Впрочем, если использовать порт #1F для мыши,достаточно предусмотреть в программе маску XOR после ввода,т.к.мышь выдает сигнал, а не замыкает на общий про- вод порта. Общий минус принят почти во всех цифро- вых системах, приставках,компах, и в боль- шинстве аналоговых устройств, хотя у тех, где разнополярное питание,общий провод ми- нусом не назовешь. Серийный крысопарк. В итоге, учитывая единый стандарт логи- ческих уровней игрового порта у своего ко- мпа и у Амиги, я решил завести себе мышку амижного стандарта и написать простенький редактор, который позволил бы рисовать от руки, в режимах OR,XOR,AND. Амижных мышей в продаже не было и быть не могло, т.к. даже AMIGA для большинства продавцов была только словом иностранного языка. Dave сказал,что были в продаже мыш- ки параллельного типа какой-то фирмы, но я их так и не застал. Остальное разнообразие грызунов было serial - т.е. последователь- ного типа. Нет,ну надо ж таких тварей нап- лодить! Каких только мутантов не увидишь. И все (наверно) с четырьмя проводами (2 на питание и 2 сигнальных).Есть и вовсе бесх- востые монстры,у них даже цены - КУСАЮТСЯ. Мышь я так и не купил - не люблю ломать хорошее. Позднее у Dave оказалась ненужная крыска, без одного светодиода, без хвоста, вот ее-то, полудохлую, я и приютил. Далее в статье описывается самая прос- тая и дешевая ПЦ-шная крысь - с 3 кнопками (с двумя, наверное, уже не выпускают). Крысбургер. Поскольку официальных крысиных данных у меня нет,вся дальнейшая информация основа- на только на личном опыте,очень небольшом. В крысе есть 3 кнопки, оптика (шар и оптический механизм, свето и фотодиоды), микруха,в которую поступают сигналы от оп- тики и кнопок, кварц,задающий частоту мик- рухи,несколько резисторов (токоограничение светодиодов, привязка логических уровней), кондер от помех, пара стабилитронов (огра- ничение, или стабилизация,напряжения пита- ния и ограничение логического уровня). Обычно 4 провода: два на питание и два информационных.Микруха последовательно пе- редает все крысиные сигналы в комп.Возмож- но,один сигнальный провод двунаправленный, возможно, микруха передает уже готовые ко- ординаты крысы. Позднее в моем распоряжении появилась другая крыса, почти такая же. Она была по- чти здорова, все детали на месте,я немного исправил ее механизм, и пока она, целая, ПЦ-шная,лежит без дела. Ломать ее не хочу. До этого видел других крыс, тоже прос- тых, и могу сделать следующий вывод (для простых крыс): крысы бывают разные... чер- ные,белые,красные... но всем одинаково хо- чется... Ой!...О чем это я?... Обычно внутри крысы общий - плюс, он поступает на катоды фотодиодов и на кнопки (иной вариант не видел).Оптика бывает двух видов:с крупным и мелким шагом. Соответст- венно, и свето-, фотодиоды двух видов, под разный размер шага. Однако и разные свето- диоды,и разные фотодиоды похожи. Они очень низко впаиваются, иногда слегка наклонены. Светодиоды - прямоугольнички с маленькой сферой.Бывают розовые (видел у крысы с ме- лким шагом) и белые (видел у крысы с круп- ным шагом). Фотодиоды - черные прямоуголь- ники (у крысы с крупным шагом немного кру- пнее) с тремя ножками.Фактически - это па- ра. Внутри два фотодиода,соединенные като- дами.Средний вывод - общий катод (катоды), а два крайних вывода - два анода. У крыс с крупным шагом диски выглядят как шестеренки - по окружности зубчики. У крыс с мелким шагом диски без зубчиков, в них мелкие щели вдоль окружности. У мелкошаговых крыс оборот диска проис- ходит за 12 с лишним мм пути,и на диске 44 прорези.У крупношаговых оборот диска за 10 мм пути и 36 зубцов на диске. Следователь- но, скорость обоих видов крыс стандартна, примерно 36 импульсов 1 фотодиода на 1 см пути.Поэтому рекомендую мышь с крупным ша- гом. Она более стабильна,т.к.размер люфтов и неточностей сборки меньше соизмерим с шагом,и ее проще налаживать. Но утверждать это не могу, т.к.себе переделал мелкошаго- вую мышь. Немного об устройстве мыши. Классика. ШАР - обладает свойством катиться в лю- бом направлении и касается минимальной площадью своей поверхности двух перпенди- кулярных ОСЕЙ. Шар подпружинен и прижат к ОСЯМ специальным упором, расположенным с противоположной стороны от ОСЕЙ. Маленькая площадь прикосновения позволяет при пере- мещении мыши в любом направлении,с минима- льным трением шара об ОСЬ, передавать ОСИ вращение, пропорциональное скорости враще- ния шара. Таким образом,одна ОСЬ вращается с горизонтальной скоростью,другая с верти- кальной. ОСЬ - закреплена в особых упорах.На од- ном краю ОСИ прикреплен ДИСК. ОСЬ передает вращение ДИСКУ. ДИСК - вращается на ОСИ. На окружности ДИСКА равномерно расположены прорези или зубчики. При движении мышки количество прорезей, прокручивающихся напротив любого края ДИСКА, пропорционально скорости пере- мещения. Две ОСИ - два ДИСКА. ОПТИКА - сканирует прорези ДИСКОВ. Сос- тоит из двух ПАР - ПАРА на ДИСК. ПАРА - состоит из простого ИК светодио- да, который освещает край ДИСКА с одной стороны, и ФОТОПАРЫ, принимающей сигнал с другой стороны ДИСКА. ФОТОПАРА - это два фотодиода в одном корпусе.Они находятся на небольшом рассто- янии друг от друга, так что,когда один ос- вещен через открытую прорезь,другой где-то наполовину закрыт. При вращении ДИСКА два сигнала с фотодатчика идут со смещением во времени, и это позволяет анализировать не только скорость,но и направление перемеще- ния, в зависимости от того,какой кого опе- режает. Но для этого сигналы именно смещены, и перекрывают друг друга, а не просто инвер- тируют. ИК - инфракрасное излучение, используе- мое в пультах ДУ, датчиках в мышах, видео- магнитофонах, приставках, центрах, кассет- ных плэйерах (для качественной передачи звука от головки,в очень дорогих моделях), оптических линиях связи. Увидеть невозмож- но, и не пытайся, ИД. ИД - ИДИОТ, сказал же: не пытайся, ну как, увидел? ИДИОТ - Идеальный Друг и Отличный Това- рищ. ДУ - не помню и не знаю, лежит какая-то фигня, с пимпочками,че-то там на ней напи- сано, и когда нажимаешь,что-то где-то про- исходит. Ограничение напряжения - стабилитрон на 5.6 В. Ток светодиодов ограничивался резисто- ром 3 кОм, и при питании 5 В и падении 1.1 В на каждом светодиоде составлял около 1 мА,что почти вдвое меньше,чем у моей мыши. Переделываем крысу. Доступным вам способом достаньте прос- того последовательного крыса. Необходимо (естественно) с исправной оптикой и меха- никой.Попросту проверьте у знакомых,на PC. Буквально порисуйте,в простом режиме любо- го графического редактора. Если вас устра- ивает динамика поведения грызуна - можете приступать к трансформации его схемы. Отк- ройте крыс (один шуруп,наверно). Осмотрите схему. Убедитесь, что фотодатчики с общим катодом - средний вывод подходит к плюсу питания.Если не можете найти плюс - прове- рьте тестером.Ток от положительного щупа - с крайней (любой) ножки фотодатчика, к от- рицательному щупу - у средней ножки фото- датчика - должен значительно превосходить обратное включение. Если не так - ищите другую крысу. Все совпало - приступим. 1. Выпаяйте - выгрызайте (как удобней) микруху, кварц,резюки и стабилитроны, если не разбираетесь, есть ли там стабилизация. Оставьте только один резистор - последова- тельно включенный со светодиодами. 2. Впаяйте микруху К561ТЛ1. Расположив ее удобным способом (совместив плюс или минус питания, т.к. у старой микрухи ножек больше, чем у этой). 3. Перережьте дорожки,идущие от кнопок к микрухе,и идущие от фотодатчиков к выходам новой микрухи. Согластно схеме, используя провода, досоедините фотодиоды с входами (номера входов значения не имеют: важно, чтобы на каждый логический элемент прихо- дил сигнал с одного фотодиода).В итоге до- лжны получится 4 пары: фотодиод - логичес- кий элемент. 4 свободных входа (по одному от каждого элемента) соедините с плюсом - 14 ножкой. 4. Если кнопки с общим плюсом - перере- жьте от них общую дорожку и соедините с минусом. 5. Если не влом, соберите схему питания, указаную на схеме;если влом и разбераетесь в стабилизации - поставьте хотя бы стаби- литрон; если вообще влом, поставьте кондер на 10 мкФ параллельно питанию. 6. Возьмите изоляционную трубочку диаме- тром 4-6 мм и 9 проводов желаемой длины. Провода тонкие, многожильные, в изоляции, конечно, диаметром меньше 1 мм. Длина до 3 метров (лично я такие буду ставить,чтоб от телика с компом и до дивана...). Возьмите более толстый и жесткий провод, например, одножильный в лаковой изоляции,от трансфо- рматора.Проденьте этот провод в изоляцион- ную трубочку, зачистите и облудите его ко- нец. Зачистите на 5-10 мм и облудите концы остальных 9 проводов, соберите их в один пучок и спаяйте вместе - аккуратно и проч- но. Припаяйте этот пучок к жесткому прово- ду. Теперь осторожно потяните за свободный конец жесткого провода, он пройдет сквозь изоляционную трубочку и протащит за собой остальные 9 проводов. У вас получится жгут - хвост к мышке. Если вы использовали про- вод марки МГТФ (тонкий, белый,как бы розо- ватый (просвечивается медь) и 4-мм полу- прозрачную (чуть желтоватую) изоляционную трубочку, то в надежности и гибкости може- те не сомневаться (у меня клава за годы работы с таким жгутом ни разу не обрыва- лась, лишь котом обгрызалась один раз). Можно использовать шнур от джойстика к приставки SEGA - как раз 9 проводов, но он ненадежный, может оборваться, жестковат и не длинный. Конечно, изготовление жгута - это клас- сика, но вдруг вы делаете это впервые?.. 7. Если есть возможность - достаньте ра- зборный 9-контактный разъем для мышки,т.к. в старом хвосте - разъеме проходят только 4 провода,и есть лишь 4 контакта.Иначе ис- пользуйте любой подходящий соединитель- штекер. Припаяйте штекер к хвосту, а хвост к мышке, соблюдая сигналы и питание. 8. Подключите мышь к Speccy - кемпстон- джойстику, но независимо от реализации Кемпстон-порта подайте питание на мышь: вывод G к минусу - общему проводу Speccy, а вывод "+", соответственно, к +5В. (К те- хнологическому +5В, через 2 Ом резистор от настоящего питания +5В). Напишите программу - фактически цикл, которая берет по маске бит с Kempston-пор- та и по его состоянию окрашивает бордюр, к примеру,в черный/белый цвет.Определите ма- ской 0-й бит и посмотрите по схеме соеди- нения, какому логическому элементу он со- ответствует,найдите его вход - фотодатчик. Запустите программу - цикл. Бордюр будет одного цвета, даже если вы будете вращать диск этого фотодиода.Теперь замкните фото- диод (вход л.э.) на минус. Бордюр должен менять цвет при замыкании, иначе где-то у вас обрыв - замыкание в сигналах. Если бо- рдюр меняется, подберите резистор,замыкаю- щий вход на землю.Номинал будет в пределах 2 - 510 кОм. Буквально перебирайте номина- лы в этих пределах.Подпаяв очередной рези- стор,покрутите диск (за ось,которой касае- тся шарик,предварительно убрав шарик). На- йдите номинал,при котором бордюр будет ми- гать пропорционально скорости вращения ди- ска, даже при очень быстром вращении (как только сможете, при этом мигание бордюра должно превратится в полосы на бордюре, не меньше 4 полос (при мелком шаге - щелевом диске,не меньше 8 полос). Если при быстром вращении бордюр перестает мигать,окрашива- ясь в один цвет, значит, номинал близок к оптимальному и требует подбора в пределах 50%. Когда подберёте нужный резистор, при- паяйте 3 таких же к остальным фотодиодам. Подбор других, наверное, не потребуется, впрочем, измените маску бит и просканируй- те остальные фотодиоды, наверняка они ра- ботают так же хорошо. (Продолжение следует.) Ред: На сегодняшний день Amiga Mouse под- держивается только в одной программе - в журнале Subliminal Extasy #3. Схемы ищите в приложении (AmiMousS.C, K_J__myP.C, MOUSplat.C).
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября