61 lines
4.3 KiB
Markdown
61 lines
4.3 KiB
Markdown
# ДЛМ — «Детская логическая машина» в браузере
|
||
|
||
Эмулятор советской программируемой игрушки «Детская логическая машина» (ВНИИ «Электронстандарт», Гатчина)
|
||
и оцифрованное руководство к ней 1987 года.
|
||
|
||
**Попробовать:** https://www.lexium.ru/dlm/
|
||
|
||
**Статья на Хабре:** [«Компьютер из пластмассы и пружинок: оцифровал руководство к „Детской логической машине“ 1987 года и нашёл в нём ошибки»](https://habr.com/ru/articles/1101092/) — история машины, как устроена оцифровка и разбор двух ошибок руководства.
|
||
|
||
В машине нет ни транзистора, ни реле, ни микросхемы: три планки со штеккерами, пружинные контакты,
|
||
перемычки, четыре лампочки и батарейки. Говоря современным языком, это программируемая логическая
|
||
матрица: три входа, семь столбцов «И», четыре выхода «ИЛИ».
|
||
|
||
## Что здесь есть
|
||
|
||
| Файл | Что это |
|
||
|---|---|
|
||
| `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 года.
|
||
- Карточки вырезаны с фотографии полного набора, найденной в объявлении о продаже.
|
||
|
||
## Лицензия
|
||
|
||
Код (`index.html`, `check.mjs`) — [MIT](LICENSE). На руководство 1987 года и картинки карточек лицензия
|
||
не распространяется.
|
||
|
||
Основной репозиторий: https://git.08h.ru/alex/dlm, здесь зеркало.
|