Timeweb.Cloud

Timeweb.Cloud

Облачная инфраструктура для бизнеса Наш сайт: https://timeweb.cloud/ ТГ: https://t.me/timewebru Хабр: https://habr.com/ru/companies/timeweb/articles/
На Пикабу
поставил 152 плюса и 5 минусов
отредактировал 3 поста
проголосовал за 3 редактирования
в топе авторов на 441 месте
Награды:
более 1000 подписчиков5 лет на Пикабу
70К рейтинг 1039 подписчиков 18 подписок 284 поста 244 в горячем

Как Алексей Пажитнов сделал сиквел Тетриса и забыл про него

Автор: TilekSamiev

Как Алексей Пажитнов сделал сиквел Тетриса и забыл про него Новости игрового мира, Тетрис, Алексей Пажитнов, Timeweb, NES, Длиннопост, Reddit (ссылка)

Тетрис — одна из самых (если не самая!) известных видеоигр, чьё имя известно даже людям, бесконечно далёким от этой индустрии. Когда в 1989 году «Тетрис» вышел на Nintendo Game Boy, он стал мировым хитом, продавшись миллионами копий и зарекомендовав себя как самая любимая в мире видеоигра-головоломка.

Для старинной видеоигры, которая начиналась как любительский проект компьютерного разработчика из СССР, влияние «Тетриса» по-прежнему сильно, доказательством чему служит огромная база игроков, по сей день пытающихся полностью пройти игру. Его успех также породил желание создать продолжение. Появились побочные продукты: такие как Hatris, Welltris и Wordtris, а также итеративные продолжения, такие как Tetris 2, Tetris DS и Tetris Effect. Но у игры могло бы быть ещё одно продолжение, которое так и не вышло. Сам создатель Тетриса, Алексей Пажитнов, придумал другую, более интеллектуальную версию игры.

На Game Developers Conference (GDC) 2024 Алексей Пажитнов рассказал о своих первоначальных планах по выпуску продолжения «Тетриса» и о том, почему мы только сейчас слышим об этом публично. Это запланированное продолжение, получившее название Tetris Reversed, было призвано изменить способ игры в тетрис. Но сиквел игры уже более десяти лет находится на стадии прототипа.

❯ Создание прототипа


Нет особого смысла приводить здесь историю Алексея Пажитнова и создания им оригинальной игры. При желании эту информацию можно найти в Википедии. Даже фильм сняли про это, многое конечно приукрасили (Голливуд же), но тем не менее. Можно упомянуть, что Пажитнов живет в США с 1991 года, где он участвовал в разработке таких игр, как Pandora’s Box, и работал с такими компаниями, как Microsoft и WildSnake Software. Помимо «Тетрис», он является автором таких игр, как Hatris, El-Fish и Hexic, а также многих других, которые углубили и расширили игровой дизайн. В 2007 году он был удостоен First Penguin Award на церемонии вручения наград Game Developers Choice Awards за прорыв в мире игр.

История продолжения Тетриса началась, когда хорватский разработчик Ведран Кланач посетил фестиваль игр NLGD в Нидерландах в 2011 году. Там Ведран разговорился с Мартином де Рондом из Guerrilla Games. Де Ронд заявил, что у него есть договоренность с Пажитновым о создании прототипа совершенно новой игры «Тетрис». Кланач естественно ухватился за возможность поработать с такой легендарной фигурой.

Как Алексей Пажитнов сделал сиквел Тетриса и забыл про него Новости игрового мира, Тетрис, Алексей Пажитнов, Timeweb, NES, Длиннопост, Reddit (ссылка)

Алексей Пажитнов и Ведран Кланач

Пажитнов придумал альтернативную версию игры под названием Tetris Reversed, в которой правила аналогичны обычному тетрису — игроки управляют падающими блоками, перемещая, вращая и размещая их, однако блоки падают перед цветными фоновыми пространствами, которые игрок пытается очистить. Т.е. тетрамино (блоки тетриса) использовались для устранения стены блоков, а не для складывания их друг в друга. Название «Reversed» происходит от того факта, что заполненные и пустые места могут меняться местами, инвертируя игровое поле. Примерный принцип игры можно посмотреть на Реддите, где три года назад уже сделали подобный реверсивный Тетрис.

Как Алексей Пажитнов сделал сиквел Тетриса и забыл про него Новости игрового мира, Тетрис, Алексей Пажитнов, Timeweb, NES, Длиннопост, Reddit (ссылка)

Де Ронд был посредником между Пажитновым и Кланачем – эти двое впервые лично встретились только в 2024 году. Де Ронд передавал инструкции по проектированию от Пажитнова Кланачу, который в свободное время создавал код игры на своем собственном движке. Кланач ныне является генеральным директором компании Ocean Media. Он был аэрокосмическим инженером, который начал свою карьеру в компании Croteam, где создал игровой движок для Serious Sam 2. За последние 20 лет он, в качестве программиста и исполнительного продюсера, поучаствовал в производстве более чем в 200 проектов.

Как Алексей Пажитнов сделал сиквел Тетриса и забыл про него Новости игрового мира, Тетрис, Алексей Пажитнов, Timeweb, NES, Длиннопост, Reddit (ссылка)

Основная часть работ по разработке Tetris Reversed была проведена в период с марта по ноябрь 2012 года. Однако к концу года проект выдохся. Прошло три года, а дальнейшего развития не последовало, что заставило самого Пажитнова предположить, что проект фактически мёртв, а прототип игры утерян.

Идея игры возникла вновь только в 2017 году, когда Кланач рассказал о ней Владу Мику, специалисту по развитию бизнеса. Мику решил лично познакомить Пажитнова с Кланачем, когда он и Кланач ужинали в апреле 2023 года вместе с Кейт Эдвардс, генеральным директором Geogrify и говорили о фильме «Тетрис». Тогда Кланач упомянул, что в его личных архивах в компьютерных файлах старого ПК с Windows 7 до сих пор хранится прототип игры под названием Tetris Reversed.

В 2024 году Влад Мику свел Пажитнова и Кланача на GDC 2024. Результатом стала специальная комиссия, в которую вошли Кейт Эдвардс, Влад Мику, Алексей Пажитнов и Ведран Кланач – четыре ключевые фигуры в возрождении прототипа.

Как Алексей Пажитнов сделал сиквел Тетриса и забыл про него Новости игрового мира, Тетрис, Алексей Пажитнов, Timeweb, NES, Длиннопост, Reddit (ссылка)

Кейт Эдвардс, Влад Мику, Ведран Кланач и Алексей Пажитнов

Пажитнов, который почти забыл о существовании прототипа, приветствовал возрождение игры. Он сказал, что это Tetris для людей с IQ 300. В оригинальной игре игрок сосредоточен лишь на части экрана: появляется блочок, который нужно куда-то перетащить и разместить. Теперь же игроку придется использовать всё игровое поле на экране сразу. По словам разработчиков, это приближает Tetris Reversed к настольным играм, вдохновившим оригинал. В отличие от оригинального тетриса, в который можно играть в течение длительного времени, Reversed был разработан для более коротких сессий, некоторые из которых длились до десяти минут. Основываясь на уровнях и выборе, Пажитнов заявил, что на некоторых уровнях выиграть может быть «абсолютно невозможно» в зависимости от того, как были установлены фоновые блоки.

❯ Тетрис наоборот

Основная механика игры, описанная и изображенная на фотографиях слайдов, такова:

Поле игры:

  • Пользователь имеет игровое поле, состоящее из сетки из 10 столбцов на 20 строк.

  • Каждый квадрат имеет два состояния: полный (серый) или пустой (чёрный).

Как Алексей Пажитнов сделал сиквел Тетриса и забыл про него Новости игрового мира, Тетрис, Алексей Пажитнов, Timeweb, NES, Длиннопост, Reddit (ссылка)

Игровой раунд

Каждый игровой раунд начинается с появления фигуры на игровом поле. Игрок может выполнить одно из двух действий:

  • Разместить фигуру на поле;

  • Инвертировать поле.

Как Алексей Пажитнов сделал сиквел Тетриса и забыл про него Новости игрового мира, Тетрис, Алексей Пажитнов, Timeweb, NES, Длиннопост, Reddit (ссылка)

Существуют также две добавленные механики:

Неразмещаемая клетка:

  • Неразмещаемая клетка – это клетка, на которую нельзя поставить фигуру.

  • Заполненная неразмещаемая клетка представлена заполненным квадратом со значком желтого шара.

  • Пустая неразмещаемая клетка представлена пустым квадратом со значком чёрного шара.


Клетка инвертирования поля:

  • Клетка инвертирования поля представлена значком молнии.

  • Если фигура помещена на клетку «Инвертировать поле», игрок получает +1 действие «Инвертировать поле» для дальнейшего использования.

❯ Будет ли официальный релиз Tetris Reversed?


Как говорит Алексей Пажитнов, он и Кланач выполнили свою работу:

«Я завершил концепцию, развитие, идеи и всё, что есть в Tetris Reversed. Это было на предварительном этапе, и с этим прототипом мы были готовы начать производство. Но в данном случае производство так и не началось, поэтому нам пришлось ждать следующего этапа, чего так и не произошло, потому что доводить его до конца — не наша работа. В то время у Мартина де Ронда было слишком много дел, поэтому он отложил этот этап производства, вероятно, потому, что у него были проблемы с The Tetris Company и получением разрешения на продолжение работы над этой версией игры. Он закрыл для себя это дело и пошел дальше, и именно поэтому Tetris Reversed так и не был выпущен».

Как Алексей Пажитнов сделал сиквел Тетриса и забыл про него Новости игрового мира, Тетрис, Алексей Пажитнов, Timeweb, NES, Длиннопост, Reddit (ссылка)

Пажитнов и Кланач заявили, что запланированная игра имеет потенциал, и надеются когда-нибудь вернуться к ней, при условии, что им удастся найти заинтересованных в ней инвесторов и издателей. А в последние годы наблюдается большой интерес к отменённым и устаревшим концепциям игр, и Tetris Reversed — это действительно интригующий взгляд на альтернативную версию Тетриса.

Есть много примеров, когда отменённые проекты видеоигр набирали обороты и выпускались спустя годы после цикла их разработки. Для компании Tetris же оригинальная игра по-прежнему является дойной коровой, и по каким-то неведомым причинам они, почему-то, не смогли найти подходящую возможность для Tetris Reversed.

Увидим ли мы когда-нибудь, как Tetris Reversed будет выпущен как эксклюзив для Nintendo Switch 2? Возможно. А в это время в Интернете уже можно найти и скачать бесплатные неофициальные игры под названием Tetris Reversed. Некоторые загружают на Гитхаб код собственной версии Tetris Reversed.

И хотя Tetris Reversed, возможно, никогда не увидит свет, оригинальная игра, вдохновившая его, по-прежнему популярна, несмотря на солидный возраст в четыре десятилетия.

Как Алексей Пажитнов сделал сиквел Тетриса и забыл про него Новости игрового мира, Тетрис, Алексей Пажитнов, Timeweb, NES, Длиннопост, Reddit (ссылка)

Даже за последние несколько месяцев спидранеры несколько раз превосходили рекорд версии для NES. После того как в январе 2024 года Уиллис «Blue Scuti» Гибсон стал первым человеком, который полностью прошёл игру, другой игрок – Энди «P1xelAndy» Артиага – в феврале набрал 8 952 432 очка, побив рекорд Гибсона. Всего несколько недель спустя Алекс Тач почти удвоил рекорд Артиаги, набрав 16 248 080 очков, выиграв 2600 долларов и став первым человеком, преодолевшим отметку в 10 миллионов очков.

Однако так называемая “последняя задача” — прохождение уровня 255 и перезагрузка игры — остается непобеждённой. Может у вас получится?


  • Написано специально для Timeweb Cloud и читателей Пикабу. Подписывайтесь на наш блог, чтобы не пропустить новые интересные статьи.

  • Облачные сервисы Timeweb Cloud — это реферальная ссылка, которая может помочь поддержать наши проекты.

Показать полностью 8

Сборка MS-DOS 4.0

Автор текста: dlinyj

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

Совсем недавно появилась следующая новость: На GitHub опубликован исходный код MS-DOS 4.00 под лицензией MIT. Раз появились исходные коды, стало сразу интересно: а можно ли собрать эту операционную систему?

Задача оказалась нетривиальной и совсем неочевидной. Оказывается, что исходные файлы DOS не так-то уж и легко переносятся в git, и уж как минимум, не как текстовые файлы в кодировке UTF-8. Но, к счастью, в отличие от утечек исходников MS-DOS 6.0, здесь имеется полный комплект файлов и инструментов, достаточный для корректной сборки и тестирования. Остались сущие нюансы, которые попили много крови.

Поэтому я, как и многие — начал свои эксперименты по сборке MS-DOS 4.0, с исправлением ошибок, а также возможностью исследования исходных кодов и тестирования их на реальном железе.

В статье же изложено краткое руководство по сборке и созданию загрузочной дискетки.

❯ Инструментарий


Собирать всё буду в Linux Mint (читай Ubuntu). Средой DOS для сборки выбрал dosbox, к сожалению, это не самый лучший вариант, потому что там идёт замедление частоты (чтобы старые программы корректно работали), поэтому сборка идёт достаточно долго. Лучше всего использовать любой удобный DOS, запущенный в виртуальной машине.

Для создания загрузочной дискеты и тестирования полученной сборки буду задействовать виртуальную машину qemu. А чтобы получить дискеты с готовым образом, я буду использовать установочную дискету MS-DOS 4.0 (найденную тут см. 4.00 OEM [Sampo]).

Прежде чем пойдём дальше — важное замечание:

Никаких чужих прав задеть не собираюсь, все модификации кода были сделаны исключительно в юмористических целях, и не подлежат распространению. Модифицированные исходники удалены.

❯ В чём сложности сборки?


Проблемы две:

  1. Некорректная инициализация переменных среды (в самом bat-файле SETENV.BAT содержится ошибки или опечатки).

  2. Проблемы с кодировкой при переносе кода с дискеток DOS в GIT с кодировкой UTF-8.


Первая проблема легко исправляется даже самостоятельно, при беглом анализе исходного кода. Она легко вскрывается при сборке, дальше просто необходимо внести правки, либо создать свой обновлённый bat-файл, который будет инициализировать переменные среды окружения.

Значительно сложнее обстоят дела с тем, что в части кода, при переносе в UTF-8, побились некоторые символы. У меня была попытка сборки, которую я описывал у себя в ЖЖ, и, в конце концов, я получил вот это:

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

Это достаточно частая и болезненная проблема со старыми исходниками времён DOS. С аналогичной задачей я столкнулся и при попытке собрать программу RAM View. Об этом пути и исправлении проблемы, я подробно написал в статье Правка чужого кода.

Здесь же мы исключим ручной труд и автоматизируем исправление проблем с кодировками.

❯ Подготовительные операции перед сборкой


Итак, шаги по сборке ДОС. Клонируем оригинальный репозиторий:

git clone https://github.com/microsoft/MS-DOS.git

Исправляем проблемы с кодировками:

sed -i -re 's/\xEF\xBF\xBD|\xC4\xBF|\xC4\xB4/#/g' MS-DOS/v4.0/src/MAPPER/GETMSG.ASM
sed -i -re 's/\xEF\xBF\xBD|\xC4\xBF|\xC4\xB4/#/g' MS-DOS/v4.0/src/SELECT/SELECT2.ASM
sed -i -re 's/\xEF\xBF\xBD|\xC4\xBF|\xC4\xB4/#/g' MS-DOS/v4.0/src/SELECT/USA.INF

Переходим в рабочую папку:

cd MS-DOS/v4.0

Перекодируем все текстовые файлы в формат MS-DOS:

find -iname '*.bat' -o -iname '*.asm' -o -iname '*.skl' -o -iname 'zero.dat' -o -iname 'locscr' | xargs unix2dos -f
find -iname '*.BAT' -o -iname '*.ASM' -o -iname '*.SKL' -o -iname 'ZERO.DAT' -o -iname 'LOCSCR' | xargs unix2dos -f


и создаём там обновлённый бат-файл для переменных среды окружения, следующего содержания:

$ cat src/e.bat
@Echo off
echo setting up system to build the MS-DOS 4.01 SOURCE BAK...
set CL=
set LINK=
set MASM=
set COUNTRY=usa-ms
set BAKROOT=e:
rem BAKROOT points to the home drive/directory of the sources.
set LIB=%BAKROOT%\src\tools\bld\lib
set INIT=%BAKROOT%\src\tools
set INCLUDE=%BAKROOT%\src\tools\bld\inc
set PATH=%BAKROOT%\src\tools;%PATH%

В принципе этих операций достаточно для сборки, а то что ниже — это лично моё хулиганство, чтобы продемонстрировать, что DOS в действительности собрался, и нет подмены файлов. Я заменяю компанию Microsoft своим ником:

find -name "*.ASM" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.INC" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.H" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.MAC" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.MSG" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.C" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.CLB" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
find -name "*.SKL" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +

Всё, теперь исходники подготовлены, для того чтобы их можно было корректно собрать.

❯ Сборка


Собирать буду в dosbox, как показала практика — это не самое лучшее решение, сборка занимает около часа, что, мягко скажем, раздражает.

Запускаю dosbox:

dosbox

Далее в нём монтирую текущую директорию как диск E.

mount e: ./

И переходим на диск e, запускаем в dosbox бат-файл, который инициализирует среду окружения, и начинаем сборку:

e:
cd SRC
e.bat

и запускаем сборку командой nmake:

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

Если вы делаете это в dosbox, то можно пойти погулять. Окончанием сборки будет выглядеть следующим образом:

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

После этого надо скопировать все собранные файлы в один каталог. Создаём каталог «4» в корне диска и копируем все бинарники специальным скриптом:

mkdir \4
CPY.BAT \4


Далее самое интересное:проверка того, что файлы запускаются. Для этого надо сделать так, чтобы dosbox прикидывался старым ДОСом. Выполняем следующую команду:

ver set 4.0

После переходим в каталог\4и можно выполнить в нёмcommand.com:

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

Хулиганство сработало, ДОС собрался и прикидывается, будто бы я его разработал. Дело стало за малым — протестировать это на реальном железе.

❯ Создание загрузочной дискетки


Дальше я думал просто примонтировать в dosbox пустой образ дискетки, и прямо из собранных файлов выполнить перенос системных файлов командой:

sys <path> a:

Но, факир был пьян, и фокус не удался. Поэтому решил MBR (Master Boot Record) позаимствовать с загрузочной дискетки DOS 4.0. К сожалению, MBR от MS-DOS 6.22 у меня не заработал.

Скачиваем установочные дискетки, попутно создаём пустую дискетку командой:

truncate --size 1474560 fdd.img

Загружаемся с установочной дискетки и ставим наш пустой образ 1,44 МБ дискетки в дисковод B, с помощью qemu:

qemu-system-i386 -fda Disk01.img -fdb fdd.img

Отменяем установку и форматируем дискету с переносом системных файлов:

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

По окончании можно закрывать окно qemu. Возвращаемся к окну с dosbox и монтируем полученный образ дискетки, с помощью следующей команды:

imgmount a: <path to fdd.img> -t floppy

И потом просто вручную переносим файлы COMMAND.COM, IO.SYS и MSDOS.SYS на дискету:

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

Всё, образ готов. Можно его протестировать в виртуальной машине, или даже записать на настоящую дискету и загрузиться!

Для запуска в qemu следует использовать следующую команду:

qemu-system-i386 -fda fdd.img

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

Записать на дискетку можно командой dd, я использую USB-FDD дисковод.

sudo dd if=fdd.img of=/dev/sdk status=progress

И, да! Эта система успешно работает на реальном железе. В данном случае проверка идёт на 386 компьютере.

❯ Выводы

Сборка MS-DOS 4.0 Гаджеты, Электроника, Программирование, Разработка, Программа, Техника, Timeweb, DOS, Длиннопост

Запуск свежесобранного MS-DOS 4.0 на реальном железе

Не буду лукавить, сборка MS-DOS 4.0 оказалась не столь простой. Пришлось посмотреть некоторые видео, пошерстить различные репозитории. Но всё же это прекрасный опыт, который позволяет заглянуть внутрь исторических исходников и покопаться в них.

Давняя утечка MS-DOS 6.0 была неполной, и собрать его не представлялось возможным. А теперь у исследователей есть готовый инструментарий, для того чтобы попрактиковаться в разработки каких-то своих модулей старой операционной системы.

Конечно же, я по-настоящему жду, когда же обнародуют исходники MS-DOS 6.22, так как ещё надеюсь увидеть их на своём веку.

Удачи вам в ваших экспериментах!

❯ Полезные ссылки:

  1. Исходные коды MS-DOS от Microsoft

  2. Пример сборки MS-DOS 4.0 во FreeDOS (видео)

  3. Compiling MS-DOS 4.0 from DOS 4.0, on a PS/2!



  • Написано специально для Timeweb Cloud и читателей Пикабу. Подписывайтесь на наш блог, чтобы не пропустить новые интересные статьи.

  • Облачные сервисы Timeweb Cloud — это реферальная ссылка, которая может помочь поддержать наши проекты.

Показать полностью 9

Играем в крестики-нолики c RPN калькулятором

Автор текста: dlinyj


Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост

Когда я разбирался с программируемыми калькуляторами, то думал, как бы элегантнее протестировать функциональность устройства. Один из известных способов проверки – это реализация какой-либо игры.

Игр для калькуляторов, как на просторах бывшего СССР, так и за рубежом громадное количество, остаётся только выбрать. Наиболее популярная — это «Посадка на Луну». Однако, для меня она показалась скучной и неинтересной, а сам код сложным и запутанным. Поэтому мой выбор пал на крестики-нолики, так как все мы играли в них в школе, и мне стало интересно сыграть в неё с калькулятором.

Реализовать игру решил на модели HP-32S, поскольку он мне очень полюбился за красоту архитектурной реализации и удобство программирования.

❯ Основа программы


В предыдущей своей статье "Калькуляторы с обратной польской нотацией" я делал обзор литературы для программируемых калькуляторов. Среди которой была замечательная книга А.Г. Гайшут "Калькулятор твой помощник и соперник в играх".

В этой книге приводится огромное количество примеров игр на калькуляторе и, в частности, пример игры в крестики-нолики:

Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост

Мне не удалось найти описания логики работы этих игр, а автор книги, к сожалению, умер в 2015 году. Попытка искать ответ в публикациях автора, любезно предоставленных на его личном сайте, не увенчалась успехом.

Поэтому придётся разбираться с этой программой самостоятельно. Приведу текст и описание программы из книги под спойлером:

Описание программы Крестики-нолики из книги:

Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост
Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост

Главная задача – это перенос этого кода с МК-61 на калькулятор HP-32S. Для начала, разберёмся как эта программа работает.

❯ Проверка программы на МК-61


Первое, что я сделал – это перенабрал код из книги в формате, который понимает онлайн-эмулятор МК-61.

Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост

Кстати, если интересно, то можно попробовать поиграть в эмуляторе, чтобы понять принцип работы. Для этого копируем код, вставляем в область «Код программы:» и нажимаем кнопку «Ввести в память». Картинка из книжки выше подсказывает нам, что калькулятор даёт координаты, куда ставить "X", а мы ему в ответ передаём координаты, куда ставить "O".

Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост

Координаты для игры

Чтобы начать играть на клавиатуре калькулятора, нужно нажать кнопку [С/П]. В ответ будет выведено число, первое число всегда «9» (центр поля). В ответ необходимо ввести свою координату, например, «2» и нажать [С/П]. И так далее, пока вы не проиграете (калькулятор выведет «77», либо будет ничья (калькулятор выведет «0»).

Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост

Калькулятор победил

Чтобы посмотреть последний ход калькулятора, надо обменять регистры X и Y местами, для этого нужно нажать на клавишу [⟷].

Проверка показала, что всё прекрасно работает как в эмуляторе, так и на живом калькуляторе, и ошибок в программе нет.

❯ Анализ кода программы для калькулятора МК-61


Для понимания работы программы, я переписал её на python. Конечно, даже при переносе на привычный язык программирования, код будет выглядеть немного диковато, поскольку реализовывался на совершенно иных принципах, но он хотя бы будет читаемым для остальных пользователей.

Особенность программирования МК-61 в том, что он пропускает команду перехода, если условие истинно, и исполняет — если ложно! Поэтому все условия для python пришлось инвертировать. Плюс, я для удобства ввёл дополнительные функции, которые также перенёс впоследствии в HP-32S: функция вывода координат крестиков и ввода ноликов, функция ничья и победа калькулятора:

Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост

Первое – инициализирую регистры калькулятора:

Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост

После всех подпрограмм идёт головная программа:

Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост

Можно увидеть, что в любом случае в самом начале крестик будет стоять на координате 9. Вся основная логика сокрыта в подпрограмме.

Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост

Из всего кода я понял, что второй ход калькулятора будет на единицу меньше оппонента, а если ход был в координату «1», то равен восьми. Но вот что делает остальная логика программы, особенно зачем там тригонометрическая функция, для меня осталось загадкой. Буду рад читателям, если кто-то сможет прояснить, как же работает эта программа.

Исходный код доступен в репозитории проекта.

И, да, код вполне себе работоспособен, в чём несложно убедиться:

Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост

❯ Перенос кода на HP-32S

Напомню, что калькулятор HP-32S, который есть у меня, принадлежит семейству калькуляторов HP10B/14B/17B/17BII/19BII/20S/21S/22S/27S/28S/32S/32SII/42S, таким образом, всё, что приводится ниже, с небольшими адаптациями можно будет перенести и на другие модели этой серии.

Трудозатраты в предыдущей главе, по переносу кода на python, были проделаны с двумя целями:

  1. Понять, как же работает этот код (увы, не выполнено).

  2. Более удобно переносить на другую модель калькулятора.

Этакая программная блок-схема, которая позволяет понять, какие регистры нужны, какие переходы и прочее.

Вооружившисьдокументацией на калькулятор HP-32S, я переписал программу крестиков-ноликов с питона для него. Для удобства я делал это в таблицах Exel. Как я уже говорил, особенность калькулятора в том, что он маркирует каждую строку буквой и цифрой, а любая метка – это смена буквы. Таблицы идеально подходят для этого.

Ниже под спойлером, приведён код программы. Если вы хоть немного знаете ассемблер и какой-то другой язык программирования, хоть тот же BASIC, то без труда сможете понять, что же там происходит.

Код программы для калькулятора HP-32S:

Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост
Играем в крестики-нолики c RPN калькулятором Калькулятор, Программирование, СССР, Timeweb, Электроника, Познавательно, Игры, Крестики-нолики, Гаджеты, Длиннопост

В силу того, что на калькуляторе HP-32S можно сделать вывод на экран конкретного регистра (с указанием имени регистра), а также запрос ввода другого конкретного регистра, то ввод-вывод становится чуть более интерактивным и интересным.

Лучше один раз увидеть, чем тысячу раз прочитать.

❯ Выводы


Изначально задача казалась мне такой простой, но заняла у меня достаточно приличное время. Её ценность состояла в том, что мне удалось разобраться — как же программировать для калькулятора HP-32S. В результате оказалось, что из модельного ряда калькуляторов, с которыми я занимался — эта версия оказалась самая дружелюбная и удобная.

Другой задачей, которую я хотел решить — это разобраться, каким образом изобретались подобные программы для микрокалькуляторов. Из-за того, что у калькулятора ограничена память программ, производилась какая-то дичайшая оптимизация, поэтому она выглядит так запутанно. Но, к моему сожалению, ни толковой литературы, ни описания, как это делалось, мне не удалось найти.

Поэтому, если у вас, уважаемые читатели, есть идеи о том, как же работает программа крестики-нолики (можно анализировать код python), то я с удовольствием их выслушаю.

❯ Полезные ссылки:

  1. Гитхаб этого проекта

  2. Первая часть «Калькуляторы с обратной польской нотацией»

  3. Сайта автора «Гайштут и его друзья»

  4. Онлайн-эмулятор МК-61

  5. Документация на калькулятор HP-32S


Если вам интересна металлообработка, старое железо, всякие DIY штуки, погроммирование и linux, то вы можете следить за мной ещё в телеграмме.


  • Написано специально для Timeweb Cloud и читателей Пикабу. Подписывайтесь на наш блог, чтобы не пропустить новые интересные статьи.

  • Облачные сервисы Timeweb Cloud — это реферальная ссылка, которая может помочь поддержать наши проекты.

Показать полностью 13

Оживляем неизвестный дисплей от японского поезда/автобуса

Как-то раз, очередным томным субботним вечером, я в очередной раз листал от нефиг делать Yahoo! Auctions — одну из крупнейших японских сетевых барахолок. Внезапно, среди рекомендуемых лотов появился вот такой внушительных размеров электровакуумный дисплей:

Оживляем неизвестный дисплей от японского поезда/автобуса Гаджеты, Электроника, Техника, Timeweb, Ретро, Сборка, Видео, YouTube, Длиннопост

Однако, рулить дисплеем, как правило, та ещё задача. «Особенно если динамическая индикация, да ну его, влом!» — подумал было я. Но у того же продавца обнаружилась и, судя по всему, управляющая плата:

Оживляем неизвестный дисплей от японского поезда/автобуса Гаджеты, Электроника, Техника, Timeweb, Ретро, Сборка, Видео, YouTube, Длиннопост

На фотографии виднеется 8085 процессор, 8251 UART и ПЗУшка — казалось бы, дизассемблируй себе, разбирай протокол, да просто с ардуины выводи что угодно. Да ещё и за одну йену, это прям даром! После этого я решил всё же попытать удачу и выхватить этот дисплей. Тем более, что давно уже хотелось какие-нибудь красивые часики в комнату...

Конечно же, какая-то зараза попыталась из-под меня эти лоты перехватить, но в итоге за примерно десять тысяч йен весь комплект достался мне.

❯ Всё уже поломано до нас


Через пару-тройку дней приходит посылка. Продавец, конечно, пожалел упаковки, и поэтому плата и дисплей просто болтались в коробке — но, к счастью, всё выглядело целым.

Оживляем неизвестный дисплей от японского поезда/автобуса Гаджеты, Электроника, Техника, Timeweb, Ретро, Сборка, Видео, YouTube, Длиннопост

Да, я в курсе, что полярность на коннекторе питания подписана задом наперёд %)

Первым же делом снимаю ПЗУ, кидаю в MSX, чтобы вычитать на комп, но увы — кроме нулей ничего не вычитывается, да ещё и греется оно очень подозрительно. При подаче питания сама плата тоже ничего не делает.

На шине процессора никакой активности нет, хотя тактовый сигнал в норме — то бишь, если бы даже ПЗУ и было целым, читать из него процессор не пытается. Плата ещё и закатана в какой-то лак, который не плавится и не растворяется, поэтому чинить такое будет то ещё «удовольствие». Даже масочные ПЗУ со шрифтами нормально не вытащить…

Гуглёж по маркировке (Morio Denki 6M06056) тоже ничего, кроме сайта производителя, не выявил. Судя по всему, они занимаются дисплеями для транспорта — так что, скорее всего, этот стоял в каком-то автобусе или поезде.

Вероятнее всего, это был автобус — ведь в поездах между станциями, как правило, на экране идёт бегущая строка. В старых автобусах же отображается лишь название следующей остановки. Выгоревший текст — 「次は、(неразборчиво)」(«Следующая: (нрзб.)») подтверждает эту догадку.

❯ Плата драйвера панели


Значит, придётся рулить панелью напрямую — благо, какая-то плата, адаптирующая его к какой-то шине, к дисплею уже прилагается.

Оживляем неизвестный дисплей от японского поезда/автобуса Гаджеты, Электроника, Техника, Timeweb, Ретро, Сборка, Видео, YouTube, Длиннопост

А ведь в наше время вся эта требуха поместится в дешёвую ПЛИСку размером с ноготь…

Судя по наличию микросхемы ОЗУ (MN2114), плата представляет себе какой-то простенький фреймбуфер. Отлично, значит с динамической индикацией на 100+ катодов уже разобрались до меня :-)

Справа снизу находится трапециевидный «молекс», знакомый нам по старым жёстким дискам. Линия 5 вольт и общий провод совпадают по распиновке — отлично, значит запитать попробуем от обычного компьютерного источника питания.

Пара минут с тестером и карандашом — и вот уже отчётливо видно, где на разъёме шины данных входы, а где выходы.

Верхний ряд группами по 4 пина соединён со входом коммутатора 74LS257 — скорее всего, это вход данных шириной в 1 байт. Нижний ряд же идёт на инвертеры, выполняющие роль буферов — так хотя бы можно понять, что в нём есть 5 входных сигналов, и 2 выходных.

Быстренько раскидываем на огрызке старой макетки штуковину, чтобы накручивать произвольные значения на восьмибитном входе данных и перемычками дёргать остальные, а на светодиодах смотреть выходные сигналы.

Оживляем неизвестный дисплей от японского поезда/автобуса Гаджеты, Электроника, Техника, Timeweb, Ретро, Сборка, Видео, YouTube, Длиннопост

Крутилки шестнадцатеричные дома были в избытке, а вот джамперы пришлось импровизировать паяльником на ходу

Ничтоже сумняшеся, я подключаю старый блок питания от компьютера к молексу на плате… И конечно же дисплей всё так же мёртв. Никакой реакции ни на входные данные, ни на закорачивание шины данных у чипа памяти на землю.

❯ Конструкция дисплея


Почему-то всё это время мне думалось, что это — ВЛИ, которому нужно около 20-30 вольт для свечения. Однако при прозвонке самой лампы тестером никакие пины между собой соединены не были — в случае ВЛИ так быть не может, ведь ему нужен накал катода. Ну, разве что, если нить накала перегорела…

Впрочем, пристальный взгляд на дисплей под лупой показал, что ни накала, ни сеток — типичных для люминисцентных индикаторов компонентов — там и вовсе нет:

Оживляем неизвестный дисплей от японского поезда/автобуса Гаджеты, Электроника, Техника, Timeweb, Ретро, Сборка, Видео, YouTube, Длиннопост

Значит, скорее всего, это газоразрядный индикатор! По горизонтали у него расположены платы с кучей группированных транзисторов. По маркировке «L-S» никакие транзисторы в справочниках подходящих лет, увы, не находятся.

Оживляем неизвестный дисплей от японского поезда/автобуса Гаджеты, Электроника, Техника, Timeweb, Ретро, Сборка, Видео, YouTube, Длиннопост

По бокам у дисплея — практически одинаковые платы с диодами, логическим инвертером (7414) и неизвестным модулем Mitsubishi MA7446-01.

Оживляем неизвестный дисплей от японского поезда/автобуса Гаджеты, Электроника, Техника, Timeweb, Ретро, Сборка, Видео, YouTube, Длиннопост

Собираем мозги в кучу и пытаемся понять, что делать дальше:

  • Поперёк «12-вольтовой» линии питания стоит конденсатор на 250 вольт — значит, как минимум, там должно быть высокое постоянное напряжение. Очевидно, положительное, если этот конденсатор проектировщики не вставили туда в роли петарды.

  • На плате мультиплексора между питанием и выходом на дисплей есть цепь с транзистором 2SC1473 — он тоже рассчитан на 250 вольт.


Значит, скорее всего, на молексе вместо 12 вольт ожидается, как минимум, под сотню с лишним, а значит и индикатору для поджига нужно напряжение где-то такого порядка.

В итоге из загашников извлекается маленький инвертер для электролюминисцентных проводов, к нему приделывается диодный мост, и вуаля — у нас есть кривой маломощный источник 160 вольт постоянки.

Припаиваем к одному из горизонтально стоящих пинов минусовой выход через резистор на пару килоом, а плюсовым аккуратненько одной рукой ведём по вертикально-стоящим…


Ура, значит сам дисплей, как минимум, жив! Можно заказывать повышающий модуль на амазоне, а пока он едет — заняться восстановлением платы мультиплексирования.

Конечно, можно было бы сделать целиком свою, и управлять аж субпикселями, как на видео. Но динамическая индикация на сотню с гаком катодов — это то ещё развлечение, поэтому мне проще было оставить всё как есть.

❯ Диагностика платы мультиплексора


Под такое дело для проекта был куплен аж целый китайский лабораторник на амазоне — и подключение платы к нему показало, что жрёт она как не в себя! Почти что целый ампер, на конструкцию из 38 корпусов. Для логики серии 74LS это уж слишком много. Получается, в плате управления тоже что-то не так.

Оживляем неизвестный дисплей от японского поезда/автобуса Гаджеты, Электроника, Техника, Timeweb, Ретро, Сборка, Видео, YouTube, Длиннопост

Так как компаратора навроде HP 10529A у меня нет, пришлось вооружиться осциллографом и таблицами истинности из даташитов.

На шине данных у ОЗУ хоть и завалены фронты, но в принципе всё смотрится не так и плохо:

Оживляем неизвестный дисплей от японского поезда/автобуса Гаджеты, Электроника, Техника, Timeweb, Ретро, Сборка, Видео, YouTube, Длиннопост

А вот на прочих чипах местами встречается откровенная дичь — например, сигналы, у которых логический ноль где-то на 1,8 вольтах, а единица на 3,5.

В двоичной логике бывает True, бывает False, но встречается и «Да нет наверное»:

Оживляем неизвестный дисплей от японского поезда/автобуса Гаджеты, Электроника, Техника, Timeweb, Ретро, Сборка, Видео, YouTube, Длиннопост

Местами и вообще какие-то непонятные лесенки, которых явно в цифровой схеме быть не должно. Ниже троичная логика, прямиком из семидесятых:

Оживляем неизвестный дисплей от японского поезда/автобуса Гаджеты, Электроника, Техника, Timeweb, Ретро, Сборка, Видео, YouTube, Длиннопост

Видимо, собирали девайс на 74 логике из альтернативной вселенной.

Оживляем неизвестный дисплей от японского поезда/автобуса Гаджеты, Электроника, Техника, Timeweb, Ретро, Сборка, Видео, YouTube, Длиннопост

По итогам пары дней такого копательства, вкупе с тыканием термопарой по всей плате даже туда, где солнечный свет не бывал, обнаружились следующие виновники:

  • 107-1 (JK-триггер) — кипятится (60+°C) сразу при включении питания, выход закорочен на вход

  • 107-2 — от выхода на вход 1кОм, в первом триггере выходной сигнал просажен (ну ещё бы), а второй вообще выдаёт не то, что в даташите, а погоду на Марсе. До кучи ещё и греется под 40 градусов.

  • 107-3 — 2кОм со входа на выход, теплее всего остального.

  • 393-1, 393-2 (сдвоенные 4-битные счётчики) — между тактовым входом и Vcc всего лишь 2 кОм, поэтому и сигналы выглядят странно.


До кучи, у сбоивших микросхем пин Gnd явно отличался по внешнему виду — припой был как будто потемневшим, и его там было больше, чем на остальных пинах в том же ряду/столбце.

Возможно, после пробоя там прошёл достаточный ток, чтобы расплавить припой и собрать его в такие горки?

Оживляем неизвестный дисплей от японского поезда/автобуса Гаджеты, Электроника, Техника, Timeweb, Ретро, Сборка, Видео, YouTube, Длиннопост

В любом случае, другие чипы с таким же симптомом было тоже решено поменять на всякий случай.

Радиомагазинов в городе уже толком не осталось — поэтому берём вкусняшки, паяльник, и едем к товарищу хабарить полный комплект логики из ведра старых плат.

Оживляем неизвестный дисплей от японского поезда/автобуса Гаджеты, Электроника, Техника, Timeweb, Ретро, Сборка, Видео, YouTube, Длиннопост

В четыре руки и два паяльника чипы хабарятся куда быстрее, чем просто в четыре руки

JK-триггеры оказались настолько сложной в применении штукой, что ими, видимо, никто пользоваться и не захотел — поэтому пришлось докупать их отдельно в интересном магазине, по сей день торгующем теми ещё музейными экспонатами.

❯ Повторный запуск


Выпаиваем всех подозрительных и заменяем их на панельки — ну вдруг опять вылетит, не паять же по новой :-)

Оживляем неизвестный дисплей от японского поезда/автобуса Гаджеты, Электроника, Техника, Timeweb, Ретро, Сборка, Видео, YouTube, Длиннопост

Фото уже более позднее — заменил ещё и кварц, чтобы увеличить частоту развёртки, дабы экран не полосил на видео

Подаём питание. Один из светодиодов на макетке, раньше постоянно горевший, на сей раз гаснет — это хороший знак. Ставим крутилки в положение 0xFF, от балды трогаем один из джамперов, и…

Оживляем неизвестный дисплей от японского поезда/автобуса Гаджеты, Электроника, Техника, Timeweb, Ретро, Сборка, Видео, YouTube, Длиннопост

Две негорящие строки — это от макетки один из проводов шины данных отвалился при проверке :-)

Оно живое!!! И жрёт со всеми включёнными пикселями аж 25 ватт.

Экспериментально подбираем распиновку коннектора:

Оживляем неизвестный дисплей от японского поезда/автобуса Гаджеты, Электроника, Техника, Timeweb, Ретро, Сборка, Видео, YouTube, Длиннопост

Способ управления тоже оказался весьма простым и понятным.

После подачи питания нужно дождаться, пока ~READY не уйдёт в лог. 0. Затем выставляем биты данных и дёргаем ~CLOCK. Этот байт попадёт в верхнюю половину самого левого столбца — пиксели, выставленные в «1», загорятся, а в «0», соответственно, погаснут.

Следующий импульс на ~CLOCK запишет байт в нижнюю половину самого левого столбца, потом — верхнюю половину второго столбца, и так далее — сверху вниз, слева направо. После записи последнего байта (нижняя половина самого правого столбца), следующий байт опять попадёт в верхнюю половину самого левого, т.е. запись идёт в цикле.

Если мы хотим начать рисовать с начала, можно дёрнуть ~RETZ — это обнулит счётчик, и рисование опять начнётся с самого левого столбца. Можно сбросить вообще всё и очистить экран при помощи ~RESET.

Притянув BRIGHT к земле можно уменьшить яркость (и потребляемую мощность) дисплея вдвое. Притянув же к земле SHOW, можно отключить отображение на дисплее вообще, при этом рисовать в память платы всё так же возможно.

❯ Проба пера


Так как терпения у меня в организме ещё меньше, чем дофамина, то была распотрошена ещё какая-то плата из мусорки. Оттуда были извлечены TC4050B — буферы, которые отлично подойдут для согласования 3.3-вольтовой ESP32 с 5-вольтовой логикой на дисплее.

Оживляем неизвестный дисплей от японского поезда/автобуса Гаджеты, Электроника, Техника, Timeweb, Ретро, Сборка, Видео, YouTube, Длиннопост

Переходник с 1980 года на 2016

Оживляем неизвестный дисплей от японского поезда/автобуса Гаджеты, Электроника, Техника, Timeweb, Ретро, Сборка, Видео, YouTube, Длиннопост

На JLCPCB я всё ещё не зарегистрировался...

Схема в этот раз даже не рисовалась, всё соединялось сразу из головы. Пишем простенькую процедуру, двигающую бит в слове туда-сюда, заливаем скетч, и любуемся:


Дописываем ещё простенький рендер шрифтов, обновляем скетч:


Ну а дальше едем в Акихабару закупаться требухой для развития проекта до какого-то полезного состояния :-)

Оживляем неизвестный дисплей от японского поезда/автобуса Гаджеты, Электроника, Техника, Timeweb, Ретро, Сборка, Видео, YouTube, Длиннопост

Котлета в комплект радиодеталей не входит!

Опытный читатель уже догадался по содержимому этого хабара из Акихабары, что дисплею уготована типичная радиолюбительская участь — стать будильником-метеостанцией %)

Операционная система же обрела рабочее название Plasma Information System OS — или, если коротко, PIS-OS.

Оживляем неизвестный дисплей от японского поезда/автобуса Гаджеты, Электроника, Техника, Timeweb, Ретро, Сборка, Видео, YouTube, Длиннопост

Смотрится итоговый результат, как по мне, восхитительно:

Но о сборке девайса и написании прошивки — уже в следующей части :-)

В реалтайме за обновлениями, среди тонны фоток еды и Мику, вы можете также следить в моём телеграме.

Также, можно посмотреть ход описанного в статье «в реалтайме», прочитав тему на EEVBlog.


  • Написано специально для Timeweb Cloud и читателей Пикабу. Подписывайтесь на наш блог, чтобы не пропустить новые интересные материалы.

  • Облачные сервисы Timeweb Cloud — это реферальная ссылка, которая может помочь поддержать наши проекты.

Показать полностью 21 3

Тюнинг старого тетриса

Тюнинг старого тетриса Тетрис, Электроника, Гаджеты, Timeweb, Техника, Длиннопост, Telegram (ссылка), Видео, YouTube

Недавно я прикупил себе старенький и оригинальный — «тот самый» тетрис, а дальше меня затянуло. Собственно, нормальная ситуация. Однако, мне пришлось столкнуться с одной неприятной проблемой: если во время игры — скорость (ака сложность) повышается выше двух пунктов, то играть становится совершенно невозможно, а скоростей-то много…

Понятно, что идёт какая-то ошибка в подборе частоты задающего генератора в контроллере тетриса, и это даже слышно на слух, так как мелодия играет уж больно быстро. Потому, мне пришла в голову мысль, а возможно ли как-то внести аппаратные изменения в устройство, так чтобы понизить частоту контроллера для корректной игры? Сам спросил — сам ответил.

Мне хотелось сделать фичу, навроде решения, как на стародавних компьютерах, у которых была кнопочка "Turbo", которая, несмотря на своё название, снижала частоту процессора. И таки да! Не буду вас томить — эта затея мне удалась, и на выходе получился весьма забавный и простой — аппаратный тюнинг тетриса.

❯ Суть проблемы


Вдохновлённый статьями Azya о реверсе тетриса, я прикупил себе точно такой же аппарат, фигурировавший в его публикациях. И обнаружил, что частота работы встроенного микроконтроллера сильно завышена.

В играх типа Brick Game, в народе известных как тетрис, не всегда корректно выставлен задающий генератор, в результате, при увеличении скорости выше второй, играть становится просто невозможно.И это явно бага, которую проще всего проиллюстрировать на видео:


Вот я, взрослый человек, и не смог пройти игру на третьей скорости, а что уж говорить о детях? Плюс, мне было дико интересно узнать, что будет, если пройти игру на максимальной скорости: покажут ли мультфильм в конце? При достижении определённого количества очков скорость растёт, а что произойдёт при взятии последней скорости?

Ну что же, настало время RTFM на процессор HT443A0.

❯ Приступим!


Из статей «Так какой же процессор использовался в играх Brick Game?» часть 1 и часть 2 мы узнаем, что конкретно в этой модели тетриса установлен четырёхбитный микроконтроллер HT443A0. И если обратиться к документации, то можно выяснить, что частота процессора задаётся резистором.

Ниже привожу схему из документации на этот контроллер, которая попутно является просто принципиальной электрической схемой тетриса:

Тюнинг старого тетриса Тетрис, Электроника, Гаджеты, Timeweb, Техника, Длиннопост, Telegram (ссылка), Видео, YouTube

Но, как обычно бывает, нигде не сказано, какой номинал резистора отвечает за определённую частоту. Единственное, что мы знаем, в каких пределах его можно изменять (от 36 кОм до 620 кОм). Это значит, что настало время весёлых опытов.

Напомню, что микросхема представляет собой каплю смолы на печатной плате. Таким образом, распиновка чипа нам недоступна, но логика подсказывает, что резисторов на плате будет не так уж и много.

Если вскрыть корпус этого устройства, то можно увидеть следующую картину:

Тюнинг старого тетриса Тетрис, Электроника, Гаджеты, Timeweb, Техника, Длиннопост, Telegram (ссылка), Видео, YouTube

В моём устройстве вместо пьезо пищалки, стоит магнитный динамик и небольшая схема усиления на одном транзисторе. Резистор снизу на фотографии нужен для схемы усиления. А вот резистор сверху – это явно сопротивление задающей частоты. Измеряем его сопротивление и получаем около 15 кОм.

Тюнинг старого тетриса Тетрис, Электроника, Гаджеты, Timeweb, Техника, Длиннопост, Telegram (ссылка), Видео, YouTube

Внимание вопрос: если мы уменьшим сопротивление – частота вырастет или уменьшится? Да, зная RC-цепочки понятно, что при уменьшении сопротивления частота будет расти, но нужно в этом убедится. Да и сверху напаять резистор проще, чем делать последовательное соединение.

Увеличиваем частоту


Подбираю номинал резистора в 15 кОм и припаиваю его в параллель к основному, тем самым уменьшая сопротивление ровно в половину.

Тюнинг старого тетриса Тетрис, Электроника, Гаджеты, Timeweb, Техника, Длиннопост, Telegram (ссылка), Видео, YouTube

И, вы знаете, факир был пьян, и фокус не удался, это сработало. Конечно, я хотел уменьшить скорость работы тетриса, а в результате ускорил его. Тем не менее это вполне себе рабочее решение.


Интересно теперь уменьшить частоту тетриса.

Уменьшение частоты


Попробую теперь уменьшить частоту в два раза. Для этого я просто подпаял резистор последовательно с основным, тем самым изменив сопротивление до 30 кОм.

Тюнинг старого тетриса Тетрис, Электроника, Гаджеты, Timeweb, Техника, Длиннопост, Telegram (ссылка), Видео, YouTube

И это оказалось тем самым сопротивлением, на котором тетрис играет адекватно, с той скоростью, которой должен.


Круто, теперь можно уже завинчивать и играть, но мне хотелось большего.

Во-первых, мне хотелось проверить: возможно ли менять частоту на ходу.
Во-вторых, как я уже говорил, хочу попробовать пройти тетрис на самом высоком уровне сложности.

❯ Добавляем регулятор частоты


Тут никаких высоких материй нету, просто заменяем постоянный резистор на переменный, найденный где-то в хозяйстве. И даже весьма удобно вывести проводочки из корпуса через батарейный отсек.

Тюнинг старого тетриса Тетрис, Электроника, Гаджеты, Timeweb, Техника, Длиннопост, Telegram (ссылка), Видео, YouTube

Крутилка

После сборки можно приступить к натурным испытаниям.


Как видно, всё отлично работает и можно в любой момент выставить комфортную частоту работы. Единственное, если тетрис вдруг зависнет при таких операциях, перегрузить его получится, только отключив питающие батареи.

❯ Выводы

Да — частоту работы микроконтроллера можно менять прямо на ходу. А вот насчёт мультика — сохраню интригу, пускай кто-то сам пройдёт, и проверит можно ли посмотреть его :)

Честно говоря, мне тоже хотелось приобщиться к этому движу вокруг реверса Brick Game. Даже немного поколдовал с транслятором ассемблера и некоторыми другими вещами. Но то времени, то вдохновения не хватает, то просто экосистемы таких же фанатиков. Поэтому для начала решил для себя сделать что-то простое и понятное.

Из забавного: понял, что можно сделать некий DJ тетрис пульт, видео с которым — успешно завирусилось у меня в шортсах:

❯ Полезные ссылки:

  1. Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х?

  2. Так какой же процессор использовался в играх Brick Game?

  3. Так какой же процессор использовался в играх Brick Game? Часть 2

  4. Документация на микроконтроллер HT443A0

Если вам интересна металлообработка, старое железо, всякие DIY штуки, погроммирование и linux, то вы можете следить за мной ещё в телеграмме.


  • Написано специально для Timeweb Cloud и читателей Пикабу. Подписывайтесь на наш блог, чтобы не пропустить новые интересные материалы.

  • Облачные сервисы Timeweb Cloud — это реферальная ссылка, которая может помочь поддержать наши проекты.

Показать полностью 6 5

Сканер отпечатков кошачьих носиков

  • Автор текста: dlinyj

Расширение сферы применения биометрической системы контроля доступа на других существ, открывает поистине потрясающие возможности.

Сканер отпечатков кошачьих носиков Гаджеты, Электроника, Техника, Кот, Timeweb, 1 апреля, Сканер отпечатков, Своими руками, Познавательно, Длиннопост

Так сложилось, что на территории мануфактуры, где я располагаюсь, живёт достаточно большое семейство иссиня-чёрных котов, все братья от одной матери, но из разных помётов. Весь этот прайд мы именуем просто Бандиты, по соответствующему характеру и поведению. Из всей этой стаи один кошак полюбился мне больше всего: самый адекватный и интеллигентный; и именно его я иногда пускаю в свои кабинеты.

И возжелал я пускать того прекрасного кошака, а остальных отсеивать, дабы не хулиганили в моё отсутствие. И пришла в мою голову мысль о пропускной системе, именуемой КотСКУД — кошачья система контроля доступа.

❯ Концепция КотСКУДа


Долго размышлял о том, каким образом это решение сделать простым, дешёвым, повторяемым и не требующим серьёзного электропитания. В очередной раз, почесав за холку любимого Бандита, пришёл к выводу, что лучше всего использовать для этих целей сканер отпечатков пальцев.

Сканер отпечатков кошачьих носиков Гаджеты, Электроника, Техника, Кот, Timeweb, 1 апреля, Сканер отпечатков, Своими руками, Познавательно, Длиннопост

Чешу любимого Бандита

Кошачий нос или лапка имеет уникальный рисунок, точно так же как рисунок отпечатка пальцев у человека. Значит осталось найти способ сканировать подушечку лап или носик (зависимости от того, что коту больше понравится).

Достаточно долго анализировал, что же есть доступного и недорогого на рынке, а после остановился на оптическом сканере отпечатков пальца модели FPM10A. Для него имеется огромное количество примеров, ПО, есть куча библиотек на Python и Arduino, а значит, по идее, с ним проблем возникнуть не должно.

❯ Пару слов об устройстве оптического сканера отпечатков


Оптический сканер отпечатков работает по принципу того, что свет под определённым углом полностью отражается на границе двух сред. И если какой-то объект прикасается к этой границе, то такое отражение нарушается и можно считать отпечаток этого объекта. Для примера приведу схему устройства оптического датчика R307, взятую с этого сайта:

Сканер отпечатков кошачьих носиков Гаджеты, Электроника, Техника, Кот, Timeweb, 1 апреля, Сканер отпечатков, Своими руками, Познавательно, Длиннопост

Оптический сенсор — весьма сложное устройство, в котором есть призма, реализующая границу сред, и полноценная камера с процессором, которая позволяет считывать отпечатки. Когда нет прикосновения, то ровный белый свет попадает в объектив камеры. А если прикасается носик к нашему КотСКУДу, то интенсивность света уменьшается, и камера таким образом фотографирует отпечаток.

Далее там идёт сложная система распознавания отпечатков по базе данных, по каким-то хитрым алгоритмам, действие которых мне неведомо.

❯ Подключение сканера FPM10A


Прелесть сканера FPM10A заключается в том, что он подключается по-обычному UART и питается от 3,3 вольта. Для его подключения понадобится любой обычный переходник USB-UART. Не буду подробно останавливаться на способе подключения этого датчика, всё достаточно подробно расписано в официальном документе.

Мне понадобилось сделать несколько пассов паяльником, чтобы подключить его к компьютеру, но с этим справиться даже ребёнок.

Сканер отпечатков кошачьих носиков Гаджеты, Электроника, Техника, Кот, Timeweb, 1 апреля, Сканер отпечатков, Своими руками, Познавательно, Длиннопост

Сканер моего КотСКУД подключён и готов к работе

Дело стало только за программным обеспечением. Возиться с Python библиотеками мне было лениво, поэтому решил использовать для начала демонстрационную программу для этих датчиков, запустив её на виртуальной машине. Программа работает весьма нестабильно, иногда вылетает, не всегда видит датчик. И, думаю, это связано с тем, что она очень плохо реализована.

Но в целом, всё как в анекдоте: мой кот раньше не любил пылесосы, но ничего, потом втянулся… Так и я, втянулся, и а потом она даже начала мне нравиться.

Сканер отпечатков кошачьих носиков Гаджеты, Электроника, Техника, Кот, Timeweb, 1 апреля, Сканер отпечатков, Своими руками, Познавательно, Длиннопост

Подготовка ПО к испытаниям

Настало самое интересное – перейти к натурным испытаниям.

❯ Натурные испытания


Наверное, самый сложный и волнительный момент. Бандит был накормлен, и максимально обласкан. Думаю, он ни разу в жизни не испытывал такого тёплого внимания к своей персоне со времён своего рождения и уж тем более не ожидал, что ему перепадёт столько вкусняшек. Во всех опытах со сканером проявлял живое участие и интерес и даже смотрел, что же будет.

Сканер отпечатка лапы

Сканер отпечатков кошачьих носиков Гаджеты, Электроника, Техника, Кот, Timeweb, 1 апреля, Сканер отпечатков, Своими руками, Познавательно, Длиннопост

Вообще, мне казалось, что научить кота тыкать лапой в сканер будет самым простым действием. Плюс, это достаточно простая и лёгкая операция.

Но я столкнулся с суровой реальностью: в отличие от домашних питомцев, у которых мягчайшие розовые подушечки, у заводских Бандитов подошва лап больше напоминает твёрдую наждачную бумагу. И как бы это странно не звучало, сканер наотрез отказывался сканировать какую-либо кошачью лапку. Или если уж и делал, то на выходе было что-то совсем неразборчивое. Поэтому отпечаток кошачьей лапы я вам не покажу.

Отпечаток кошачьего носа


Не могу сказать, что Бандит был в восторге, что ему хотят отсканировать носик, но и большого сопротивления не оказывал. Вообще, в этой всей процедуре никаких насильственных или неприятных действий к любимому котику не применялось, всё было достаточно добровольно, да и кот очень разумен. Проблема была скорее в том, что он не хотел прикоснуться к сканеру и замереть, чтобы качественно носопырка его была отсканирована.

Сканер отпечатков кошачьих носиков Гаджеты, Электроника, Техника, Кот, Timeweb, 1 апреля, Сканер отпечатков, Своими руками, Познавательно, Длиннопост

Сканируем кошачий носик

Всё же, после нескольких не самых удачных попыток, Бандит согласился более спокойно ткнуться носом в эту светящуюся штуку, и отпечатки удались. После этого я начал сохранять результаты на компьютере, и он с невероятным любопытством, следил за всеми моими действиями, чем просто поразил меня, будто бы он сам всё понимал, что я там делаю.

Сканер отпечатков кошачьих носиков Гаджеты, Электроника, Техника, Кот, Timeweb, 1 апреля, Сканер отпечатков, Своими руками, Познавательно, Длиннопост

Что же ты там такое делаешь?

Настал момент истины, можно ли использовать оптический сканер отпечатков для кошачьих носиков и далее реализовывать мой КотСКУД?

❯ Результаты


Вам же тоже, как и мне не терпится посмотреть, что же там удалось насканировать? Удачных сканов не так много, как я уже говорил, Бандит достаточно резво крутил мордой, а проявлять насилие или как-то фиксировать его — мне не позволяла совесть.

Вот первые два более-менее удачных снимка отпечатка кошачьего носика, ощутите уникальность момента: вы видите их первыми.

Сканер отпечатков кошачьих носиков Гаджеты, Электроника, Техника, Кот, Timeweb, 1 апреля, Сканер отпечатков, Своими руками, Познавательно, Длиннопост

Первые отпечатки кошачьих носиков

В конце концов, мне удалось получить более-менее чёткий снимок котоноса. И как раз к этому моменту, Бандиту надоела эта игра, и он решил слинять.

Сканер отпечатков кошачьих носиков Гаджеты, Электроника, Техника, Кот, Timeweb, 1 апреля, Сканер отпечатков, Своими руками, Познавательно, Длиннопост

Чёткий снимок кошачьего носа

Считаю это настоящим успехом!

❯ Выводы


Главный вывод из всей этой затеи такой: отпечаток кошачьего носика можно использовать в системе КотСКУД для доступа животного в помещение.

Однако я не учёл несколько факторов:

  1. Сбор массива отпечатков одного носика. Чтобы собрать достаточное количество отпечатков носа с разных ракурсов, для корректного распознавания и добавления в базу данных, требуется длительное время. А кот не желает так долго заниматься этими глупостями и начинает сопротивляться.

  2. Дрессировка. Второй фактор, который почему-то мне не пришёл в голову – что котика надо будет обучить тыкать носом в эту светящуюся штуковину. А, как показала практика, тыкать носом, да ещё с достаточным усилием, чтобы отпечаток чётко читался, кот не хочет. И никакие вкусняшки и поглаживания его не соблазнят в этом действе.

  3. Носик мокрый. А это означает, что сам сканер будет достаточно быстро пачкаться кошачьими соплями и потребуется регулярная очистка.

Так что научно-исследовательская работа по внедрению КотСКУДа продолжается. Думаю, следующие результаты будут обнародованы через год, ровно первого апреля.

❯ Полезные ссылки

  1. Устройство и принцип работы оптического сканера отпечатков пальца.

  2. Документация подключения оптического датчика отпечатков FPM10A.


Если вам интересна металлообработка, старое железо, всякие DIY штуки, погроммирование и linux, то вы можете следить за мной ещё в телеграмме.


  • Написано специально для Timeweb Cloud и читателей Пикабу. Подписывайтесь на наш блог, чтобы не пропустить новые интересные материалы.

  • Облачные сервисы Timeweb Cloud — это реферальная ссылка, которая может помочь поддержать наши проекты.

Показать полностью 10

Медная фотография

  • Автор текста: dlinyj

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Стремление людей запечатлеть то, что они видят, кажется, было всегда. Сначала они рисовали углём на стенах пещеры, потом красками на холстах. А в последние пару столетий роль человека свелась лишь к нажатию на кнопку. Всю остальную работу делает свет, спроецированный на фоточувствительную поверхность.

В классической фотографии такая чувствительность к свету достигается благодаря замечательным свойствам солей серебра. В альтернативном фотопроцессе под названием цианотипия — используются соли железа. Но так ли уникальны эти металлы и их соли? Возможно ли сделать фотографию, например, на поверхности меди?

В детстве я замечал, как отполированная медная фольга, приклеенная к текстолиту, достаточно быстро темнела на солнечном свету, однако потемнение не происходило на необлучённых участках. Тогда я отметил, что какая-никакая фоточувствительность у меди имеется. Потом у меня долго витала идея получения фотографии на медной пластине. А ещё, мне очень хотелось понять, почему же такой фотографии нет повсеместно?

Как-то я рассказал об этой затее strain_pulse, и мы решили попробовать ответить на этот вопрос вместе.

❯ Начало пути


Светочувствительность меди я использовал ещё в радиолюбительской практике. Достаточно было зачистить стеклотекстолит до блеска мелкой наждачной бумагой, затем положить сверху трафарет, нарисованный тушью на кальке, и оставить всё это под очень яркой лампочкой (150-200 Вт) на сутки. После этого на плате появлялся рисунок, который можно было обводить цапон-лаком.

Этот метод этот был описан в книге О.Г. Верховцев К.П. Лютов «Практические советы мастеру-любителю: Электротехника. Электроника. Материалы и их обработка.» 1987 г.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Чтобы активировать поверхность меди и ускорить процесс её фотоокисления, нужно использовать хлорное железо… В 2015 году я с успехом повторил этот опыт и подробноописал у себя в ЖЖ. Приведу две фотографии оттуда.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Экспонирование

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Полученный результат

Невооружённым взглядом видно, что получился хорошо читаемый негатив. Да, есть разводы, не очень хорошая контрастность, но вполне можно увидеть буквы и даже следы скрепок.

Именно с этого момента я точно понял, что хочу сделать настоящую живую фотографию на медной пластине и стал предпринимать множество попыток. Одной из них была покупка фотоаппарата “Любитель” и закрепление медной пластины внутри него. Но, к сожалению, ничего не получилось.

Только после того, как я объединил усилия с strain_pulse, у нас начали появляться реальные результаты.

❯ Первые опыты


Первые планы были наполеоновские: сделать из коробки и линзы простейшую фотокамеру, и на неё заснять некоторый объект.

Идея такая: мы активируем медь в хлорном железе, размещаем её внутри импровизированной фотокамеры, закрываем коробку, включаем свет, и спустя десять минут радуемся результату.

В камере главное — это объектив. Его роль играла обычная собирающая линза. А главное, у линзы — это фокусное расстояние. Зная его и прикинув, во сколько раз хотим увеличить/уменьшить изображение относительно объекта, мы по формуле тонкой линзы легко сможем определить на каком расстоянии расположить объект, и где искать изображение.

Фокусное расстояние с достаточной для нас точностью измерить довольно легко. Нужно взять простую советскую… линзу и с её помощью получить на полу резкое изображение лампы, которая висит на потолке. Расстояние от линзы до пола будет с высокой точностью равно фокусному. Это следует из всё той же формулы тонкой линзы, если пренебречь слагаемым, содержащим расстояние от линзы до потолка.

Изображение мы решили делать уменьшенным примерно в два раза, чтобы собрать больше света и снизить время экспозиции. Рассчитав все расстояния, стали по линейке и экрану определять, не ошиблись ли мы в расчётах.

Увидеть сие действо можно на фотографии ниже. Для точности, в качестве экрана следует использовать инструкцию к фрезерному станку, ну или в крайнем случае — к токарному — это пункт обязательный ;)

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Настройка оптической схемы

После этого берём подходящую коробку, и открываем кружок умелые руки, а спустя 10 минут получаем готовую камеру. На вспененный полиэтилен наклеен двухсторонний скотч, куда будет крепиться медная пластина.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Получившаяся камера

После того как камера готова, осталось просто выключить свет, замочить фольгированный текстолит на две минуты в хлорном железе и зафиксировать на нужном месте. Включаем свет и даём экспозицию.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Экспозиция

Через десять минут открываем дрожащими руками коробку иииии… Ничего… Вообще, ничего, никакого эффекта. То есть медь даже цвет не поменяла. Это был провал…

Время было позднее, и я поехал домой, захватив этот активированный текстолит. А дома мне пришла другая интересная мысль.

❯ Удивительное открытие


Пока я ехал в метро, мы переписывались в телеге. Пришла идея, что стоит использовать что-то более коротковолновое. Судя по цвету меди, она должна хорошо поглощать ультрафиолет.

Придя домой, я взял эту активированную медную пластину, положил на неё десять рублей, и засунул на десять минут в лампу для ноготочков.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Фольгированный текстолит с монеткой

Каково же было моё удивление, когда спустя десять минут медь почернела там, где на неё светила лампа, и осталась розовой под монеткой.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Два главных вывода из этого опыта:

  1. Главным действующим лицом в чернении меди является ультрафиолет.

  2. Пластины после активации хлорным железом медь можно хранить некоторое время в тёмном месте.

Второй вывод полезен тем, что можно заранее заготовить медные пластины и потом ставить их в фотоаппарат.

Следующий вопрос: а есть ли возможность дезактивировать медь? Была попытка помыть с мылом и мочалкой плату и затем закинуть обратно под УФ лампу.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Купание

Выводы, увы, неутешительные. Всё равно темнеет, и нужно искать другие способы закрепления.

Мы попытались повторить опыт с импровизированным фотоаппаратом и мощным УФ-фонариком.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Фотографирование в лучах УФ

К сожалению, ничего не получилось. И дело не в линзе, которая может задерживать часть УФ (но для этого диапазона это никак не влияет), просто не хватает интенсивности света.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Вы видите изображение? Я тоже не вижу…

Но, явно мы на верном пути, и нужен другой подход.

❯ Контактная фотография


Мы решили отложить непосредственное получение фотографии, и сосредоточились на методике фактического получения читаемого снимка в меди. Для этого решили использовать негативный портрет на фотопластинке, который strain_pulse делал в своём кружке. Процесс получения такой фотографии называется контактная печать.

Взяв текстолит, мы просто натёрли его ваткой, смоченной в растворе хлорного железа, тем самым активировав медь. Способ хуже, чем погружной, но для подобных опытов годится. Затем взяли стеклянный негатив, положили сверху и начали светить ультрафиолетовым фонариком.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Засвечивание меди сквозь негатив

Светили таким образом минут 10, водя фонариком по всей плоскости негатива. После снятия стекла мы не ожидали увидеть никаких особых результатов, но каково же было наше удивлёние, когда всё получилось!

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Первая удачная фотография в меди!

Даже отсканировал её на память.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Скан полученного изображения

Нам стало интересно, а только ли ультрафиолет может нам помочь, может что-то ещё бытовое и доступное может быть полезно.

❯ Можно ли использовать вспышку?


Следующий вопрос — это можно ли использовать энергию фотовспышки для этих целей?

Поскольку в результате опытов медь таки растворилась в хлорном железе, в запасах был найден лист текстолита 2 мм толщиной, метр на метр размером, и, что удивительно, фольгированный. Резать его было жалко, поэтому просто 2500 наждачной бумагой на углу было всё сошлифовано и активировано ваткой, пропитанной хлоридом железа.

После поместили туда негатив и начали “пыхать” вспышкой над негативом, до момента пока “зайчики” не стали выпрыгивать из глаз. Примерно так же, минут 10-15, с интервалами на зарядку конденсатора.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Попытка получить позитив с помощью вспышки

К сожалению, эксперимент показал, что вспышка не оказывает видимого воздействия на медь. В отличии, например, даже от обычного света ламп накаливания, благодаря которому активированная медь вполне себе темнеет.

❯ Обкатка технологии


Для того, чтобы добиться повторяемости, решил всё же выработать сносный алгоритм действий. Самое ценное — это выяснить время экспозиции. Для этого я вырезал из текстолита лист по размеру негатива и натёр его наждачной бумагой 2500 зернистости до блеска.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост
Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Активацию меди производил с помощью ватки. Скажу сразу, что способ плохой и не даёт равномерность покрытия. Плюс, время взаимодействия с раствором тоже важно. Лучше всего делать полное погружение в хлорное железа, а затем промывку в воде и сушку. Да, и делать это стоит при красной лампе, ибо обычный свет также темнит медь. Но, если быстро, то можно при обычном неярком свете.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Всё готово к активации

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Кладу всё под УФ-лампу

В процессе опытов с разными промежутками от одной минуты до 15, я установил время оптимальной экспозиции — это 10 минут. В принципе его достаточно.

Ниже приведена экспозиция, спустя 5 минут. Читаемо, но видно плохо.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Ещё, очень важно — чтобы текстолит был сухим и чистым! На нём не должно оставаться солей хлорного железа, иначе при попытке смыть их, смывается всё — вместе с изображением.

Одна из главных проблем, которые сильно ограничивают применение такой фотографии, — это невозможность зафиксировать изображение. Проще говоря, после облучения позитив виден, но при хранении на свету светлые участки меди постепенно темнеют, и изображение пропадает. Для этого нужно было придумать способ фиксации изображения.

❯ Закрепление фото


Чтобы зафиксировать медную фотографию и предотвратить потемнение светлых участков, требуется деактивировать (или пассивировать) медь.

Первое, что мне пришло на ум — это после промывки покрыть полученную фотографию лаком, чтобы ограничить доступ кислорода и тем самым предотвратить фотоокисление. К сожалению, это не помогло: под слоем автомобильного лака из баллончика медь темнела так же интенсивно, как и без лака. Требовались более жёсткие меры.

И такое решение было найдено — это вещество бензотриазол (далее БТА). В пору процитировать википедию:

Бензотриазол — эффективный ингибитор коррозии для меди и её сплавов. При погружении медной или изготовленной из медных сплавов детали в раствор бензотриазола на её поверхности образуется пассивирующий слой, состоящий из комплекса между медью и бензотриазолом, предотвращающий коррозию. Этот слой нерастворим в воде и многих органических растворах, причём чем толще этот слой, тем эффективнее защита.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Чтобы приготовить закрепляющий раствор, нужно растворить 7 граммов вещества БТА в 100 граммах медицинского спирта.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Всё готово к экспериментам по закреплению фотографии

Активацию меди мы делали правильным способом — с погружением в раствор соли при красном свете. После была промывка в дистиллированной воде и экспонирование. Затем полученный позитивный отпечаток мы погружали в 7% раствор БТА в спирте.

Есть инструкция по применению, которую мы читали на банке этого вещества. Там рекомендуется погружать на несколько часов. Но в процессе экспериментов мы выяснили, что дольше пяти минут вещество полностью снимает фотографический отпечаток с меди.

Таким образом, первый отпечаток у нас не получился и полностью был смыт самим БТА. Второй отпечаток мы погружали буквально на минуту, но всё равно контрастность снимка ушла. А если учесть снимок и так не очень контрастен, то получается совсем грустно.

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Отпечаток после закрепления в БТА. В растворе лежит контрольный кусок текстолита

Чтобы не дать дальше осветляться рисунку, БТА мы немного смывали спиртом. На мой взгляд это лишнее, можно было просто обтереть салфеткой. Тем не менее способ оказался рабочим.

❯ Выводы

Медная фотография Фотография, Техника, Timeweb, Электроника, Познавательно, Длиннопост

Фотография в меди, через неделю лежания на подоконнике

Возможно нам не удалось окончательно установить способ фиксации изображения. Сама технология ещё требует доработки. Но факт остаётся фактом: на медь можно фотографировать! Здесь куча места для подобных опытов.

Краткая инструкция по получению снимка:

  • Все действия после активации лучше всего производить при красном свете (как с классической ЧБ фотографией).

  • Медную пластину требуется именно окунать в раствор хлорного железа, и не допускается протирать.

  • Время выдержки в растворе не менее одной минуты.

  • После раствора следует промыть в воде от соли и высушить пластину.

  • Экспозиция в УФ свете (или солнечном) не менее 10 минут. После экспонирования снимок в темноте прекрасно хранится.

  • Фиксировать стоит в растворе БТА в течение одной минуты, а после — просто насухо протирать.

Мы будем благодарны химикам, если они дадут рекомендации по фиксированию изображения и лучшей активации меди. Возможно какие-то другие рекомендации.

❯ Благодарности


Эта статья реализована в соавторстве с strain_pulse. Именно ему принадлежат многие классные идеи, которые были опробованы на практике. Выражаю благодарность девушке Софии К. за разрешение использовать негатив с её изображением для этих экспериментов и в данной статье.



  • Написано специально для Timeweb Cloud и читателей Пикабу. Подписывайтесь на наш блог, чтобы не пропустить новые интересные материалы.

  • Также подписывайтесь на наш телеграмм-канал — только здесь, технично, информативно и с юмором об IT, технике и электронике. Будет интересно.

  • Облачные сервисы Timeweb Cloud — это реферальная ссылка, которая может помочь поддержать наши проекты.

Показать полностью 24

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Приветствую всех!
Месяц с небольшим назад я рассказывал о таком девайсе как МС6205. Тема подобных экранов меня заинтересовала, и вот ко мне в руки попал другой экземпляр, однострочный и с более простым управлением. Тем не менее, несмотря на схожий вид, внутри он устроен совершенно иначе — если в МС6205 был матричный индикатор, то тут используется панель с самосканированием. Как же оно работает и как это запустить? Давайте разбираться.

Итак, в сегодняшней статье поговорим о семействе советских текстовых индикаторов ПИУ. Узнаем, как они устроены и как работают. Попутно поговорим о текстовых газоразрядных дисплеях с самосканированием. Традиционно будет много интересного.

❯ Суть такова

Началась эта история ещё в 2022 году, когда я услышал про существование такого устройства как ПИУ-2 и немедленно захотел себе такой экземпляр. Девайс был куплен без промедления, интереса ради. Далее последовали выпившие немало моей крови попытки его подключения, которыми я наконец и решил поделиться.

ПИУ-1 и ПИУ-2 — две модели индикаторных приборов, использовавшихся в неком оборудовании (мне так и не удалось выяснить, где именно, но, по слухам, стояли такие где-то на ЖД). Оба этих девайса имеют схожую конструкцию и отличаются лишь кодовой таблицей. Так что практически всё, что будет сказано тут, применимо и к ПИУ-1.

❯ Обзор оборудования

Так уж вышло, что в моих руках побывали два ПИУ — ранней и поздней версии.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Общий вид первого экземпляра. Здесь только индикаторный модуль. Также по бокам должны были располагаться два крепёжных ушка, но у моего прибора они замяты.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

На обратной стороне разъём, клемма заземления, крепёжные винты (один из которых под пломбой) и заводская табличка. Как и практически все интересные и необычные советские приборы индикации, выпускался девайс на ровненском «Газотроне».

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Снимем кожух. Внутри металлическая рама, к которой прикручены плата, панель и разъём.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

С обратной стороны ничего интересного.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Плата. На ней вся электроника — чипы логики, память, ПЗУшка с таблицей символов и импульсный преобразователь для питания панели.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Разъём, связывающий панель с внешним миром. Почему-то очень сложно было найти какую-то информацию на этот счёт, так что оставлю тут для потомков: ответная его часть называется 2РМ30КПН32Г5В1В.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Панель представляет собой законченный модуль, соединённый с платой разъёмом МРН. Состоит он из стеклянного индикатора, рамки и платы, к которой он подключается.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Интересно то, как подключается непосредственно стеклянная колба к плате — тоненькими проволочками-волосинками, которые легко сминаются и рвутся. Для защиты от жизненных ударов щели заклеены полоской липкой ленты.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

А вот более старая панель. Внешне отличия заметны не особо…

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

С обратной стороны отличие лишь в годе выпуска — 1983. Также видно, что изолятор в разъёме на этот раз карболитовый.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Вскрываем. Внутри это совершенно иное устройство, построенное уже на двух платах. Эти платы вставляются в слоты, позволяющие при необходимости вытащить какую-либо из них без паяльника.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Первая плата — низковольтная. На ней расположена управляющая логика и ПЗУшки.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Вторая — высоковольтная. Здесь преобразователь, выдающий все необходимые для питания панели напряжения, а также транзисторные сборки, призванные управлять анодами и катодами индикатора. Интересное схемотехническое решение в виде дорожки-спиральки — явно какая-то катушка низкой индуктивности.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Шасси со снятыми платами.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Оба модуля втыкаются в расположенную на боковой стенке кросс-плату. От неё же расходятся жгуты проводов к разъёму и индикатору. К слову, о разъёме. Вместо ОНЦ здесь стоит другой разъём — 2РМ30Б32Ш5В1В. Впрочем, ответная часть к нему та же самая.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Те самые слоты.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Разъём МРН, через который подключается индикатор.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Индикатор отдельно. От рассмотренного ранее он не отличается ничем.

❯ Как работает ПИУ

Вообще, по своей структуре ПИУ во многом схож с МС6205 — здесь тоже есть преобразователь питания, генератор импульсов, знакогенератор, блок интерфейса и подобная логика. Но вот индикаторы тут стоят совершенно иные. Это так называемые газоразрядные индикаторы с самосканированием.

Вообще, если вы никогда не интересовались подобным железом, то вид матричного индикатора, способного работать всего по двенадцати проводам, уже способен заинтересовать. А уж упоминание того, что прибор этот не содержит ни единого полупроводника, и вовсе поставит в ступор обывателя.

Наиболее доходчиво о работе таких ГРИ рассказывал товарищ radiolok. Я сам узнал об этих индикаторах, посмотрев этот ролик, после чего немедленно захотел себе какой-то законченный девайс на базе такой панели. Именно им и стал ПИУ.

Принцип работы таких панелей очень схож с декатронами, а также (немного) с газоразрядным индикатором ИН-33. Помимо обычных анодов и катодов девайс имеет вспомогательные аноды (аноды сканирования). Если последовательно подавать импульсы между группой анодов сканирования и одной из групп катодов, то можно получить разряд, последовательно проходящий все столбцы индикатора. Если в момент, когда разряд сканирования горит в некотором положении (которое можно однозначно отсчитать благодаря наличию отдельно выведенного катода сброса, с которого начинается прохождение разряда по столбцам), подать импульс на анод сканирования, то в выбранной строке этого столбца загорится точка. Таким образом, для работы индикатора необходима схема сканирования, которая постоянно будет проходить по всей панели, и схема индикации, которая, зная, где сейчас находится разряд (благодаря работе от того же тактового генератора) может включать и выключать аноды индикации.

❯ В чём разница между ПИУ-1 и ПИУ-2

Изначально я думал, что эти две модели — разные ревизии одного и того же прибора. Но всё оказалось куда интереснее. Первая и вторая версия отличаются кодовой таблицей.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

У ПИУ-1 она такая.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

А у ПИУ-2 — вот такая.
По просторам гуляют две документации: одна называется «ПИУ-1: паспорт, техническое описание и руководство по эксплуатации», другая — «Приборы индикаторные универсальные ПИУ-1, ПИУ-2: паспорт, техническое описание и руководство по эксплуатации». При этом они описывают по сути два совершенно разных по схемотехнике устройства. Первая рассказывает про более старую версию, имеющую внутри два слотовых модуля и кросс-плату, вторая — про поздний вариант, собранный на одной плате. Помимо этого в первой инструкции детально описаны некоторые аспекты работы устройства в синхронном и асинхронном режимах (в документации к ПИУ-2 эти моменты скромно опущены). Чтобы вам не пришлось искать эти архивы среди кучи битых, ссылку на них я дам чуть позже.

❯ Первый запуск

Итак, самое время приступить к экспериментам.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Берём ответную часть разъёма и припаиваем провода. Распиновка есть в документации.
Но, увы, при попытке что-то вывести меня ждала неудача — на экране отображался один и тот же символ. Последующие проверки показали, что в индикаторе, судя по всему, вылетела ПЗушка, так как адресный счётчик работал исправно. Я понятия не имею, где взять такую же, чем её прошить и какой прошивкой, так что разбирательства с этим индикатором я забросил, а через полгода его лежания у меня и вовсе продал.

Также именно упомянутый экземпляр успел засветиться в ролике всё того же radiolok, где на 2:37 показаны внутренности моего ПИУ. Этими фотографиями я поделился в чатике давным-давно, и вот они наконец пригодились.

❯ Подключение

Так уж вышло, что детального описания работы ПИУ практически нигде нет. Есть, конечно, документация (причём сразу в двух версиях), но на этом всё. Поэтому сейчас я расскажу о том, как же вообще работает эта штука с точки зрения программиста микроконтроллеров.

Начнём, конечно же, с разъёма. Предыдущая ответная часть ушла вместе с неисправной панелью, пришлось намутить другой. Как оказалось, за минувший год такие разъёмы в местном магазине радиодеталей кончились, пришлось купить у сборщика металла. На этот раз он уже был частью какого-то жгута (если вдруг это условное обозначение вам о чём-то говорит, напишите в комментариях).

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Разбираем разъём и выпаиваем остатки проводов. Их, разумеется, не выкидываем — ещё пригодятся.
Теперь можно перейти к распиновке самого блока. Она здесь оказалась вот такая:

  1. X8

  2. Первая строка

  3. X7

  4. Вторая строка

  5. X6

  6. Третья строка

  7. X5

  8. Четвёртая строка

  9. X4

  10. Пятая строка

  11. X3

  12. Шестая строка

  13. X2

  14. Седьмая строка

  15. X1

  16. Ничего

  17. Гашение

  18. Синхросигнал

  19. Запись/индикация

  20. Импульсы сброса

  21. Строб

  22. Ничего

  23. Сброс

  24. 5 В

  25. Управление яркостью

  26. -12,6 В

  27. Ничего

  28. Ничего

  29. Ничего

  30. Земля

  31. Ничего

  32. Масса

Для питания требуется два напряжения — +5 и -12,6 В. Взять их можно, разумеется, в компьютерном БП. Как показала практика, от -12 В он девайс тоже отлично стартует.

Если просто подать питание, девайс тоже должен запуститься — послышится тихое пищание преобразователя, а экран очень тускло засветится оранжевым — именно так выглядит процесс сканирования. Для примера фото я сделал в темноте при большой выдержке и почти полностью открытой диафрагме, в реальности увидеть это свечение получится только если приглядываться.

❯ Синхронный и асинхронный режим

Индикатор может работать в двух режимах — синхронном и асинхронном.
В асинхронном режиме ПИУ находится в одном из двух состояний. Когда на контакте 19 разъёма присутствует высокий уровень, управляющая схема ожидает поступления на вход данных. Когда напряжение снимается, прибор переходит в режим индикации.
В синхронном режиме контакт 19 всегда заземлён, а отображаемая информация обновляется сразу при поступлении новых данных. Именно этот режим мы и задействуем.

❯ Пишем первую программу

Памятуя о жёстких глюках неясной природы при подключении МС6205 напрямую к выводам МК, я решил и тут использовать сдвиговый регистр. Подключение, таким образом, очень простое — строб и сброс к выводам МК, X1...X8 — к Q0...Q7 регистра. В качестве управляющего девайса была взята всё та же тестовая ардуино.

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Саму микросхему удалось уместить внутри разъёма.
Теперь о программе. Для начала необходимо сбросить экран (после чего он погаснет), после чего последовательно загрузить в регистр каждый символ, не забывая после этого дёргать строб. У ПИУ нет шины адреса как у МС6205, он работает по сути как обычный дисплей 1602: выставляем на шине код, после чего даём высокий уровень на строб. Для программиста единственное отличие лишь в том, что у HD44780 строб по спаду сигнала, а также есть поддержка управляющих команд, тогда как единственная команда, которую знает ПИУ, — это считать код символа с восьмибитной шины и протолкнуть его в буфер.

Прибор работает в кодировке КОИ-7, что тоже надо учитывать.
Остаётся только залить её, и, если ПИУ живой, на экране должно будет появиться примерно следующее:

ПИУ-2. Оживляем плазменный текстовый индикатор из СССР Гаджеты, Электроника, СССР, Timeweb, Познавательно, Техника, Длиннопост

Наконец-то оно работает!

❯ Немного про ГТИ и внешний знакогенератор

У индикатора имеется возможность управления полностью извне. Оно позволяет использовать ПИУ при отсутствии возможности подключить его по штатному интерфейсу, а также если встроенный знакогенератор сдох.

Для этого индикатор обладает выводами управления строками, ГТИ и импульсов сброса.
Контакты 2, 4, 6, 8, 10, 12, 14 служат для непосредственного включения или выключения пикселей в столбце. ГТИ — генератор тактовых импульсов, от которого работает схема сканирования. В момент смены уровня этого сигнала с высокого на низкий происходит считывание данных с выводов управления строками. Контакт импульсов сброса нужен для определения начала панели — на нём появляется низкий уровень в тот момент, когда сканирующий разряд проходит «нулевой» катод.

И при попытке запустить индикатор в таком режиме можно наглядно увидеть, насколько же всё-таки слабо работает Arduino! «Медленные» digitalWrite не справляются с таким переключением, отчего изображение размазывается.

Смена «медленных» pinMode и digitalWrite на «быструю» работу с портами резко меняет ситуацию к лучшему.

❯ Управление яркостью

25 контакт разъёма — ещё один генератор импульсов, служащий для управления яркостью панели. Если подать высокий уровень на контакт 17, то индикатор погаснет. Но, само собой, если подавать на него сигнал случайной частоты и фазы, то индикатор будет мерцать. Чтобы этого не происходило, существует контакт управления яркостью: импульсы на контакт гашения подаются синхронно с таковыми на 25 выводе, а их длительность позволяет регулировать время горения столбца панели.

❯ Неожиданные глюки

В процессе опытов столкнулся с проблемой, что после прогрева девайсу плохеет — при выводе появляются фантомные символы, сброс не приводит к полному гашению экрана. Предположительно, всему виной электролиты, которые следует поменять все и полностью.

❯ Библиотека для Arduino

Я прекрасно понимаю, что большинство из заинтерсовавшихся, скорее всего, будут использовать ПИУ для сборки часов или другого подобного устройства. Специально для них я привёл все тестовые проги в нормальный вид и написал библиотеку для работы с этим прибором при помощи Arduino. Также в репозитории лежат обе версии документации, упомянутые ранее.

❯ Вот как-то так

При кажущейся простоте ПИУ оказался прибором, не менее интересным, что и МС6205.

По сравнению с цифровыми ГРИ или ВЛИ, проектов на подобных девайсах немного, но они всё же есть. На просторах удалось найти вот такой вот шикарнейший девайс. Индикатор очень круто выглядит и разбавляет уже приевшиеся проекты типа привычных «ИН-12 с синей подсветкой».

Такие дела.

Больше фото в источнике материала на Хабре. Увы, все фото не влезли (их действительно много), а именно в них вся суть и самое вкусное. Так же там элементы кода и прошивка :)


  • Написано специально для Timeweb Cloud и читателей Пикабу. Подписывайтесь на наш блог, чтобы не пропустить новые интересные материалы.

  • Также подписывайтесь на наш телеграмм-канал — только здесь, технично, информативно и с юмором об IT, технике и электронике. Будет интересно.

  • Облачные сервисы Timeweb Cloud — это реферальная ссылка, которая может помочь поддержать наши проекты.

Показать полностью 25
Отличная работа, все прочитано!