Троичная ЭВМ "Сетунь" (1958)

Уравновешенная троичная система счисления - форум переехал с http://ternary.info

Moderator: haqreu

User avatar
askfind
Devil
Posts: 898
Joined: 04 Jan 2016 09:15
Location: Russia, S.- Peterburg

Re: Троичная ЭВМ "Сетунь" (1958)

Post by askfind »

Новости от Министерства цифрового развития, ИТ и связи РО
Ссылка;
🔗 https://vk.com/wall-49623145_4704

🔢 7 февраля — день рождения создателя уникальной «чудо‑машины»

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

📌 Его главное изобретение — троичный компьютер «Сетунь».

В отличие от привычных нам устройств, работающих на принципах «0 и 1», «Сетунь» использовала троичную логику («−1, 0, +1»). Это давало ряд преимуществ:
- более эффективное использование памяти;
- упрощение некоторых вычислений;
- повышенную надёжность.

В 1959 году первая модель «Сетуни» была создана в МГУ. Машина оказалась настолько удачной, что её запустили в серийное производство — всего изготовили 50 экземпляров.

✅«Сетунь» успешно применялась в науке и образовании, доказав жизнеспособность троичной системы.

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

Его «чудо‑машина» показала: иногда выход за рамки привычных решений открывает новые горизонты.
__________
#МинцифрыРО
#Ростовскаяобласть
#История
You do not have the required permissions to view the files attached to this post.
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
User avatar
askfind
Devil
Posts: 898
Joined: 04 Jan 2016 09:15
Location: Russia, S.- Peterburg

Re: Троичная ЭВМ "Сетунь" (1958)

Post by askfind »

Что cделать в 2026 году?

1. Новый дизайн сайта www.trinary.su/
2. Выпустить партию "Троичный калькулятор MK-SETUN-01" на основе эмулятора "Сетунь-1958" на языке программирования Си.
3. Запуск и отладка программного обеспечения для троичной цифровой машины "Сетунь". ИП-2, ИП-5, ПОЛИЗ-64 и др. для эмулятора 'setun1958'.
4. Реализация троичных элементов и макет с FPGA.
5. Реализация макета троичного цифрового элемента на ферритовых кольцах..

--------------------------
Обратная связь

Приглашаю вас, участников группы, к обсуждению планов в новом году.
You do not have the required permissions to view the files attached to this post.
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
User avatar
askfind
Devil
Posts: 898
Joined: 04 Jan 2016 09:15
Location: Russia, S.- Peterburg

Re: Троичная ЭВМ "Сетунь" (1958)

Post by askfind »

С "умным и послушным" помощником, ИИ [ai kimi k3 chat], проект эмулятора троичной цифровой машины СЕТУНЬ из 1958 года сдвинулся с места!

Автоматически была создана Arduino библиотека для модуля ESP32-C3 (RISC-V) и примеры использования. Требуется проверка и отладка.

# EmulatorSetun1958 — Arduino Library (v2.12)

Arduino library emulator of the Soviet ternary computer **"Setun-1958"** — the world's first serial ternary computer, developed at Moscow State University under the leadership of N.P. Brusentsov and S.L. Sobolev.

⌨ Команды интерпретатора Serial CLI
Управление эмулятором

| Команда | Сокр. | Описание |
| —------— | —----— | —-----------------------— |
| `help` | `h`, `?` | Справка по всем командам |
| `reset` | — | Сброс машины |
| `begin` | `b` | Начать выполнение |
| `run` | `r` | Запуск в непрерывном режиме |
| `step [N]` | `s [N]` | Выполнить N шагов |
| `pause` | `p` | Приостановить |
| `reg` | `rg` | Вывести регистры |
| `version` | `v` | Версия эмулятора |
| `quit` | `q` | Сброс и останов |

- - - - -
Работа с памятью

| Команда | Описание |
| —---------------— | —--------------------------— |
| `fram [zone]` | Дамп зоны FRAM (`-`, `0`, `+`) |
| `drum [zone]` | Дамп зоны DRUM (0-35) |
| `load <addr> <val>` | Записать значение в FRAM |

- - - - -
Отладка

| Команда | Описание |
| —---------------— | —---------------------------------— |
| `debug [0\|1]` | Включить/выключить логирование |
| `break [addr]` | Точка останова по адресу C |
| `breakmb [zone]` | Точка останова по зоне DRUM |
| `clearbp` | Удалить точки останова |
| `calc <a> <op> <b>` | Троичный калькулятор (`+ - * & \| ^`) |

💻 Пример использования
#include <EmulatorSetun1958.h>

EmulatorSetun1958 setun;

void setup() {
Serial.begin(115200);

// Инициализация LittleFS (ESP8266/ESP32/RP2040)
setun.initLittleFS(true); // true = форматировать при ошибке

setun.reset();
setun.begin();

Serial.println(F("Ready. Type 'help' for commands."));
setun.printPrompt();
}

void loop() {
setun.handleSerial(); // Обработка CLI + выполнение шагов
}

🚀 Быстрый старт в Serial Monitor

setun1958> help
=== Commands ===
reset - Reset machine
begin, b - Begin execution
...
setun1958> load 0---0 +00000001
Loaded +00000001 to 0---0
setun1958> load 0---1 +0000000+
Loaded +0000000+ to 0---1
setun1958> reg
+========== REGISTERS ==========+
K = 000000000
F = 00000
...
setun1958> step 5
Executing 5 steps...
setun1958> fsinfo
=== LittleFS Info ===
Total: 1048576 bytes
Used: 24576 bytes
Free: 1024000 bytes
setun1958> ls /
Directory: /
------------------------------
drum/ [DIR]
ptp1/ [DIR]
ptr1/ [DIR]
ptr2/ [DIR]
script/ [DIR]
software/ [DIR]
------------------------------

📦 Структура библиотеки

EmulatorSetun1958/
├── EmulatorSetun1958.h # Заголовочный файл (12.7 KB)
├── EmulatorSetun1958.cpp # Реализация (48.9 KB)
├── library.properties # Метаданные Arduino Library
├── keywords.txt # Подсветка синтаксиса
├── README.md # Документация
├── .gitignore
└── examples/
├── Setun1958_Basic/ # Базовый пример с CLI
├── Setun1958_Arithmetic/ # Тесты троичной арифметики
└── Setun1958_LittleFS/ # Работа с файловой системой

Выполнить код Python
Не удалось выполнить код Python
Выполнить код Python
Выполнить код Python
Выполнить код Python
Выполнить код Python
Выполнить код Python
Библиотека EmulatorSetun1958 для Arduino с поддержкой LittleFS и полноценным командным интерпретатором через Serial создана.
Скачать: EmulatorSetun1958.zip (18.0 KB)
📦 Структура библиотеки
plain

EmulatorSetun1958/
├── EmulatorSetun1958.h # Заголовочный файл (12.7 KB)
├── EmulatorSetun1958.cpp # Реализация (48.9 KB)
├── library.properties # Метаданные Arduino Library
├── keywords.txt # Подсветка синтаксиса
├── README.md # Документация
├── .gitignore
└── examples/
├── Setun1958_Basic/ # Базовый пример с CLI
├── Setun1958_Arithmetic/ # Тесты троичной арифметики
└── Setun1958_LittleFS/ # Работа с файловой системой

📁 Автоматическое создание каталогов
При вызове initLittleFS() создаются каталоги:
Таблица
Каталог Назначение
/drum Образы памяти DRUM (магнитный барабан)
/ptp1 Вывод перфоратора (перфолента)
/ptr1 Ввод с фотосчитывателя 1
/ptr2 Ввод с фотосчитывателя 2
/script Программы в формате .sst
/software Дампы FRAM, регистров, ПО
⌨ Команды интерпретатора Serial CLI
Управление эмулятором
Таблица
Команда Сокр. Описание
help h, ? Справка по всем командам
reset — Сброс машины
begin b Начать выполнение
run r Запуск в непрерывном режиме
step [N] s [N] Выполнить N шагов
pause p Приостановить
reg rg Вывести регистры
version v Версия эмулятора
quit q Сброс и останов
Работа с памятью
Таблица
Команда Описание
fram [zone] Дамп зоны FRAM (-, 0, +)
drum [zone] Дамп зоны DRUM (0-35)
load <addr> <val> Записать значение в FRAM
Отладка
Таблица
Команда Описание
debug [0|1] Включить/выключить логирование
break [addr] Точка останова по адресу C
breakmb [zone] Точка останова по зоне DRUM
clearbp Удалить точки останова
calc <a> <op> <b> Троичный калькулятор (+ - * & | ^)
LittleFS — файловая система
Таблица
Команда Описание
fsinit Инициализировать LittleFS
fsinit format Инициализировать с форматированием
fsinfo Информация о файловой системе
ls [path] Список файлов
rm <file> Удалить файл
savedrum <file> Сохранить DRUM в /drum/
loaddrum <file> Загрузить DRUM из /drum/
savefram <zone> <file> Сохранить зону FRAM в /software/
loadfram <zone> <file> Загрузить зону FRAM из /software/
loadscript <file> Загрузить программу из /script/
💻 Пример использования
cpp

#include <EmulatorSetun1958.h>

EmulatorSetun1958 setun;

void setup() {
Serial.begin(115200);

// Инициализация LittleFS (ESP8266/ESP32/RP2040)
setun.initLittleFS(true); // true = форматировать при ошибке

setun.reset();
setun.begin();

Serial.println(F("Ready. Type 'help' for commands."));
setun.printPrompt();
}

void loop() {
setun.handleSerial(); // Обработка CLI + выполнение шагов
}

🚀 Быстрый старт в Serial Monitor
plain

setun1958> help
=== Commands ===
reset - Reset machine
begin, b - Begin execution
...
setun1958> load 0---0 +00000001
Loaded +00000001 to 0---0
setun1958> load 0---1 +0000000+
Loaded +0000000+ to 0---1
setun1958> reg
+========== REGISTERS ==========+
K = 000000000
F = 00000
...
setun1958> step 5
Executing 5 steps...
setun1958> fsinfo
=== LittleFS Info ===
Total: 1048576 bytes
Used: 24576 bytes
Free: 1024000 bytes
setun1958> ls /
Directory: /
------------------------------
drum/ [DIR]
ptp1/ [DIR]
ptr1/ [DIR]
ptr2/ [DIR]
script/ [DIR]
software/ [DIR]
------------------------------

🎯 Особенности реализации

| Компонент | Описание |
| —--------------— | —-------------------------------------------— |
| **LittleFS** | Условная компиляция — отключается на AVR |
| **Каталоги** | Автосоздание при `initLittleFS()` |
| **CLI** | Полноценный парсер с backspace, echo |
| **Форматы файлов** | CSV для DRUM/FRAM, текст для скриптов |
| **PROGMEM** | Поддержка загрузки программ из Flash |
| **Платформы** | ESP8266, ESP32, RP2040 (LittleFS); AVR (без FS) |
You do not have the required permissions to view the files attached to this post.
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)