Шахматный компьютер Интеллект-02 был описан в журнале "Радио" в 1983 году № 9. Предположительно это первое в СССР серийное бытовое устройство, выполненное на микропроцессоре широкого назначения (наши первые калькуляторы на процессорном ядре появились лет на 10 раньше (Электроника Б3-09), но у них были свои процессорные ядра и своя узконаправленная архитектура).
Компьютер выполнен в виде шахматной доски.
Внизу расположен индикатор из четырёх светодиодных индикаторов. Слева от них два красных светодиода "Вы выиграли" и "Вы проиграли". Справа - клавиатура.
Вверху вставляется картридж. Я видел картриджи с играми "Шахматы" (два варианта) и ГРАН-КАЛАХ.
Шахматы - это обычные шахматы, а для игр Гран и Калах используются специальные фишки.
![Изображение из журнала "Радио" 1983 № 9 Изображение из журнала "Радио" 1983 № 9](https://habrastorage.org/getpro/habr/upload_files/227/37f/997/22737f9973663e071b9c766df671a477.png)
Шахматное поле сдвигается и убирается с доски, а под полем находится ниша для игровых фишек.
![Описание игры в журнале "Радио" 1983 № 9 Описание игры в журнале "Радио" 1983 № 9](https://habrastorage.org/getpro/habr/upload_files/259/aad/01b/259aad01b709581489dca7aedd80b657.png)
Вообще планировали разные картриджи, включая НИМ-1, НИМ-2, СМЭШ, куспак, нарды, уголки, крестики-нолики и шашки рэндзю, но кроме двух картриджей "Шахматы" и "Гран-калах" я других не видел.
Несмотря на кажущуюся простоту внутри довольно много микросхем.
Основа - микропроцессор КР580ИК80А (КР580ВМ80А).
ОЗУ сделано на микросхемах КР565РУ2 суммарно 1 килобайт.
Внутри картриджа стоит микросхема масочного ПЗУ типа КР568РЕ1 или КР568РЕ2 объемом до 8 килобайт.
Более подробно внутреннее устройство описано на сайте https://emuverse.ru/wiki/Интеллект-02
Вы можете там более детально прочитать про его архитектуру. Я лишь дополню, что на самом деле скан-коды кнопок выглядят так:
СБ ВИ ПП A1 B2 C3 D4 E5
[ ] [bf] [fb] [f1] [f2] [f3] [f4] [f5]
ВВ СТ УИ F6 G7 H8 9 0
[df] [7f] [fa] [f6] [f7] [f8] [f9] [f0]
И на индикаторах нет возможности зажигать точки. Только семь сегментов.
Принципиальной схемы шахматного компьютера я не видел. Скорее всего она была взята с прототипа - с шахматного компьютера Chess Challenger 3. Или может быть с компьютера Schachcomputer SC2. Вот его схема:
![Схема Schachcomputer SC2 Схема Schachcomputer SC2](https://habrastorage.org/getpro/habr/upload_files/55e/ec3/d98/55eec3d9800d2d4a102d089fab4d2ee6.jpg)
У "Интеллекта", в отличие от прототипов, ПЗУ выполнено в виде отдельного сменного картриджа. Если купить просто шахматный компьютер без картриджа, то он работать не будет.
![Картридж от игры Гран-калах Картридж от игры Гран-калах](https://habrastorage.org/getpro/habr/upload_files/336/029/bc3/336029bc3b26035f27862a9a3b4a9db9.png)
Внутри картриджа только одна микросхема ПЗУ и несколько резисторов.
Когда я играл с шахматным компьютером, то подумал, а возможно ли сделать свою прошивку с шахматным движком? По идее, это сделать несложно, если делать в кодах микропроцессора КР580ВМ80А. А если хочется чего-то помощнее и побыстрее? Тогда в картридже должен стоять более мощный микроконтроллер. Это можно сделать. Но тогда стоит задача, как сделать взаимодействие между шахматным компьютером и своим микроконтроллером, если у шахматного компьютера наружу выведено только ПЗУ с диапазоном адресов от 0x0000 до 0x1FFF? Шахматный компьютер ничего не может записать в ПЗУ, только считать, выставив адрес на шину.
Вывод напросился такой, что необходимо динамически изменять содержимое ПЗУ так, чтобы процессор шахматного компьютера продолжал думать, что лишь исполняет код из ПЗУ.
В итоге появилась такая плата с эмулятором ПЗУ.
![Схема эмулятора ПЗУ Схема эмулятора ПЗУ](https://habrastorage.org/getpro/habr/upload_files/202/c34/6b3/202c346b3db91892a01c2264ea8744a5.png)
В этой плате много всего дополнительного на случай если её использовать автономно (кнопки, индикатор и т. д.)
Схема довольно простая - микроконтроллер STM32F205VET6 и регистр 74HC373 для приведения уровней и отключения вывода по окончанию сигнала CS.
Работает она так: микропроцессор шахматного компьютера выставляет на шину адрес и дёргает сигнал CS. По приходу сигнала CS микроконтроллер платы эмулятора от нужного адреса просто выставляет из своего ОЗУ на шину данных выходной байт. В листинге C это выглядит как несколько строк:
IDR = (GPIOB->IDR) & 0b1111111111111; // считываем адрес
GPIOA->ODR = Chess_RAM[IDR]; // выводим ROM
По прерыванию в порте B сидит наш адрес. Мы его считываем и выставляем наружу байт из массива.
Если не изменять ОЗУ Chess_RAM, то предварительно загрузив в него известные прошивки, получается простой эмулятор текущих картриджей.
А если надо сделать свой картридж с реакцией на кнопки и выводом на индикатор?
Тогда в качестве прошивки была написана небольшая программа в кодах КР580ВМ80А, которая работает так:
Четыре ячейки с адресами 0003, 0004, 0005, 0006 содержат коды, которые надо выводить на дисплей.
Программа, написанная в кодах КР580ВМ80А, поочередно выводит эти ячейки на четыре индикатора (порт 0xF6 выбирает номер индикатора и порт 0xF5 значение байта).
Затем программа считывает порт 0xF4 шахматного компьютера, который содержит код 0xFF, если кнопка нажата, или код нажатой кнопки.
Считанный код программа передаёт в картридж, обращаясь к диапазону адреса ROM в зависимости от нажатой кнопки. Например, если кнопка не нажата, то программа считает из ПЗУ по адресу 0x10FF. Если нажата кнопка "УИ" с кодом 0xFA, то программа считает из ПЗУ по адресу 0x10FA.
Программа STM32 в картридже после того, как выдала код ПЗУ по адресу, анализирует, по какому адресу, собственно было обращение. И если обращение было в диапазоне 0x1000-0x10FF, то значит моя программа в шахматном компьютере передала таким способом код нажатой кнопки.
Ну, а дальше этот код анализируется, программа на STM32 выполняется и результат её работы, будь то свой шахматный движок, или простая программа "Часы" выводит время просто путём записи тех цифр, которые надо вывести, изменяя ОЗУ (для шахматного компьютера это ПЗУ) с адресами 0003, 0004, 0005 и 0006.
В результате получился самодельный картридж. В качестве эксперимента я сделал при загрузке выбор трёх известных картриджей - Шахматы 1, Шахматы 2, Гран-калах, чтобы можно было играть в те игры на случай, если у пользователя нет оригинальных картриджей, и дополнительно адаптировал шахматный движок, сделанный на базе mcu-max. В итоге в картридже с эмулятором появилось четыре игры.
Не знаю, насколько отличаются по уровню игры три шахматных движка. Знаю, что первый картридж "Шахматы", скорее всего, адаптирован от игры Chess Challenger 3, поскольку отвечает теми же ходами. А вот переписанный заводской картридж "Шахматы", который поставлялся в поздние Интеллекты, совсем другой. Он занимает почти весь объём ПЗУ и играет совершенно по-другому.
Получился такой забавный интерактивный картридж. А вывод может получиться следующий: если есть, например, какая-нибудь полузакрытая компьютерная система, то можно использовать такие картриджи, эмулирующие ПЗУ и оперативно меняющие его содержимое
Например, если вы, вдруг, решили починить ZX Spectrum или ПЭВМ "АГАТ" с битым ОЗУ, то можно реализовать такую тестовую прошивку (и добавив в картридж свой ЖКИ), которая будет вставляться вместо штатного ПЗУ, и позволит более наглядно понять, что там не работает, не анализируя сигналы анализатором или осциллографом.
Вот и всё. Спасибо за внимание.
Комментарии (17)
ignatfomenko
22.08.2024 13:04+1Я такой как то на блошином рынке купил. Даже инструкцию к нему дали. Но вот проблемка вышла, не рабочий оказался. Все хотел из него сделать шахматы на ESP32. Но времени не хватает.
hmpd
22.08.2024 13:04+2Много играл в детстве с ним. Картриджа "Гран-Калах" не было, но красные и белые фишки (спрятаны под шахматной доской) в комплекте были. Игра чем-то похожа на нарды.
Что касается шахмат, я всегда проигрывал. Уровней сложности было три. Чём выше уровень, тем дольше машина думает над каждым ходом. Неплохая вещь была
GlukKazan
22.08.2024 13:04+1Игра не похожа на нарды. В нардовых играх есть кубики, в манкалах (к которым относится Калах) их нет. Такая же детерминированная игра как Шахматы. Но кстати, Калах далеко не самая удачная манкала.
ABRogov
22.08.2024 13:04Я так и не понял, а в чем был смысл во всем этом (оригинальной поделки), вместо того, что бы просто вывести на экран телевизора? Можно было бы еще что-то делать... а так, по моему весьма расточительно было тратить процессоры на какие-то шахматы...
cdriper
22.08.2024 13:04+2мобильность устройства (нужна только розетка)
стоимость, ибо формирование вывода на телевизор требует до хрена совестких микросхем
Javian
22.08.2024 13:04Посмотрите на фото в статье "изображение из журнала "Радио" 1983 № 9".
Вот смогла бы девушка играть на телевизоре, если не вставить в розетку вилку шнура питания (правая верхняя часть фото)?
А на этом приборе можно играть где угодно.
BenGunn
22.08.2024 13:04+1Я собрал небольшую коллекцию советских программируемых калькуляторов, а в работе постоянно использую МК52. Когда нибудь в моей коллекции появится и этот девайс.
AlexHeyy
А он сам понимает,, куда сходили фигурой? Т.е датчики на магнитах какие-то, герконы, или что-то такое там есть? Или надо после каждого хода вводить кнопками, кто куда сходил?
sfrolov Автор
Надо вводить свой ход, он ответит своим
janatem
Да, а чтоб рокировку сделать, нужно было ввести довольно длинную последовательность: ВИ, ход ладьи, ВВ, ход короля. Удивительно, что современный способ выразить рокировку — просто ход королем на две клетки — был реализован в компьютерах сравнительно поздно.
Еще у этой машины был забавный баг — она позволяла делать рокировку ферзя с ладьей.