diff --git a/README.md b/README.md new file mode 100644 index 0000000..45c5c43 --- /dev/null +++ b/README.md @@ -0,0 +1,53 @@ +# ДЛМ — «Детская логическая машина» в браузере + +Эмулятор советской программируемой игрушки «Детская логическая машина» (ВНИИ «Электронстандарт», Гатчина) +и оцифрованное руководство к ней 1987 года. + +**Попробовать:** https://www.lexium.ru/dlm/ + +В машине нет ни транзистора, ни реле, ни микросхемы: три планки со штеккерами, пружинные контакты, +перемычки, четыре лампочки и батарейки. Говоря современным языком, это программируемая логическая +матрица: три входа, семь столбцов «И», четыре выхода «ИЛИ». + +## Что здесь есть + +| Файл | Что это | +|---|---| +| `index.html` | эмулятор: одна страница, без библиотек и сборки | +| `cards/` | карточки к игре 8 «Зоологические карточки» | +| `DLM_rukovodstvo_1987.pdf` | руководство: сканы всех страниц, набранный текст и расшифровка рисунков программ | +| `check.mjs` | проверка всех программ эмулятора по правилам игр из руководства | +| `post.md`, `BACKLOG.md` | черновик статьи и идеи на будущее | + +В эмуляторе: + +- пульт, на котором можно ставить штеккеры и перемычки, крутить переключатели и держать кнопку; +- вид изнутри: как едет планка, какой контакт замыкается и где течёт ток (механизм реконструирован + по руководству и по памяти владельца); +- таблица ответов на все восемь входов и разбор столбцов в логические выражения; +- все 11 игр из руководства и логические элементы из статьи + [«Криптография и другие вычисления на детских логических машинах»](https://habr.com/ru/articles/807187/); +- кубик, спички, фишки и карточки «на столе» для игр, где они нужны; +- сохранение своих программ в браузере. + +## Проверка + +``` +node check.mjs +``` + +Скрипт моделирует машину независимо от кода страницы и сверяет каждую программу с правилами игры из текста +руководства: на всех восьми входах, а игры 4, 7 и 8 — полным перебором партий и раскладок. +Две найденные ошибки самого руководства (игры 4 и 8) скрипт выводит отдельно; остальное должно совпасть. +Нужен Node.js 18 или новее. + +## Запуск локально + +Откройте `index.html` в браузере. Сервер не нужен. + +## Источники + +- Руководство — экземпляр автора, проданный вместе с машиной № 005957 23 февраля 1988 года. +- Карточки вырезаны с фотографии полного набора, найденной в объявлении о продаже. + +Основной репозиторий: https://git.08h.ru/alex/dlm, здесь зеркало.