Троичная ЭВМ "Сетунь" (1958)
Moderator: haqreu
-
- Novelist
- Posts: 25
- Joined: 16 Jun 2018 14:35
Re: Троичная ЭВМ "Сетунь" (1958)
askfind, большое спасибо за разъяснение по адресации и переходам.
(оффтоп от сетуни:)
по поводу BCTD это элементарное представление троичного числа битами: каждый трит кодируется 2мя битами, 1 бит отвечает за положительность трита, другой за отрицательность, для ускорения операций сдвига чередование положительных и отрицательных бит происходит не для каждого трита, а для целой последовательности из 9 тритов представляющих трайт.
BCTD EOF - переменное содержимое последних 2-3 байт, во первых длинна BCTD файла может быть строго из значений "2N + (N+3)/4", во вторых само значение, вернее битовая маска EOF варьируется в зависимости от длины файла, что сразу собой представляет и сигнатуру и своеобразную контрольную сумму.
Есть еще PBCTD, отличие упакованного представления то, что каждый трайт кодируется переменным числом битов, минимальным и достаточным для однозначного определения всех тритов трайта, т.е. первые 9 бит кодируют положительность тритов трайта, а вот следующие биты кодируют только триты значение которых не однозначно (т.е. только те, которые могут быть либо нулевыми либо отрицательными), EOF в PBCTD кодируется набором битов недостаточным для определения трайта, т.е. последовательностью от 1 до 17 нулевых битов, берется максимально возможная последовательность таких нулевых битов, чтобы поместиться на границу байта.
PBCTD представление может быть удобным для передачи по сети, в то время как для эмуляции максимально быстрое представление BCTD, опять же оно максимально быстрое только в сдвиговых операциях (т.е. в умножении и делении на степени тройки), остальные же операции будут эмулироваться десятком или несколькими десятками бинарных операций, что конечно не медленнее других представлений, но и не очень то быстрее.
Где конкретно первоисточники этих форматов? не знаю. там и сям. частично даже на этом форуме.
(оффтоп от сетуни:)
по поводу BCTD это элементарное представление троичного числа битами: каждый трит кодируется 2мя битами, 1 бит отвечает за положительность трита, другой за отрицательность, для ускорения операций сдвига чередование положительных и отрицательных бит происходит не для каждого трита, а для целой последовательности из 9 тритов представляющих трайт.
BCTD EOF - переменное содержимое последних 2-3 байт, во первых длинна BCTD файла может быть строго из значений "2N + (N+3)/4", во вторых само значение, вернее битовая маска EOF варьируется в зависимости от длины файла, что сразу собой представляет и сигнатуру и своеобразную контрольную сумму.
Есть еще PBCTD, отличие упакованного представления то, что каждый трайт кодируется переменным числом битов, минимальным и достаточным для однозначного определения всех тритов трайта, т.е. первые 9 бит кодируют положительность тритов трайта, а вот следующие биты кодируют только триты значение которых не однозначно (т.е. только те, которые могут быть либо нулевыми либо отрицательными), EOF в PBCTD кодируется набором битов недостаточным для определения трайта, т.е. последовательностью от 1 до 17 нулевых битов, берется максимально возможная последовательность таких нулевых битов, чтобы поместиться на границу байта.
PBCTD представление может быть удобным для передачи по сети, в то время как для эмуляции максимально быстрое представление BCTD, опять же оно максимально быстрое только в сдвиговых операциях (т.е. в умножении и делении на степени тройки), остальные же операции будут эмулироваться десятком или несколькими десятками бинарных операций, что конечно не медленнее других представлений, но и не очень то быстрее.
Где конкретно первоисточники этих форматов? не знаю. там и сям. частично даже на этом форуме.
-
- Devil
- Posts: 798
- Joined: 04 Jan 2016 09:15
- Location: Russia, S.- Peterburg
Re: Троичная ЭВМ "Сетунь" (1958)
Не прояснил для себя введения Вами несколько сущностей. Где посмотреть программный код объявления типов данных для тритов и трайтов?ProMiNick wrote:
BCTD это элементарное представление троичного числа битами: каждый трит кодируется 2мя битами, 1 бит отвечает за положительность трита, другой за отрицательность, для ускорения операций сдвига чередование положительных и отрицательных бит происходит не для каждого трита, а для целой последовательности из 9 тритов представляющих трайт.
BCTD EOF - переменное содержимое последних 2-3 байт, во первых длинна BCTD файла может быть строго из значений "2N + (N+3)/4", во вторых само значение, вернее битовая маска EOF варьируется в зависимости от длины файла, что сразу собой представляет и сигнатуру и своеобразную контрольную сумму.
PBCTD, отличие упакованного представления то, что каждый трайт кодируется переменным числом битов, минимальным и достаточным для однозначного определения всех тритов трайта, т.е. первые 9 бит кодируют положительность тритов трайта, а вот следующие биты кодируют только триты значение которых не однозначно (т.е. только те, которые могут быть либо нулевыми либо отрицательными), EOF в PBCTD кодируется набором битов недостаточным для определения трайта, т.е. последовательностью от 1 до 17 нулевых битов, берется максимально возможная последовательность таких нулевых битов, чтобы поместиться на границу байта.
Мне было важно использовать определения, которые легко обрабатывать двоичными ARM процессорами.
В работе Рамиль Альварес Х. Алгоритмы троичной арифметики. – М.,Фонд «Новое тысячелетие», 2012. – 20 с. были предложены троичных типы данных:
Code: Select all
/* Тип данных троичное целое число */
typedef struct trin {
int n;
int trit[18];
} trit_t;
/* Тип данных троичное с плавающей запятой */
struct ftrin {
int8_t n[5];
int8_t trit[15];
};
Попробовал эту версию. Удобно для программистов. Наглядно, легко анализировать исходный код. Тип данных 'int' - классический для всех микроконтроллеров. Недостатки - медленная работа с тритами в числе.
В проекте симулятора "Сетунь-1958" просмотрел несколько статей, где были предложены троичных типов данных.
Остановился на версии представлении трита двумя битами.
Code: Select all
/**
* Типы данных для виртуальной троичной машины "Сетунь-1958"
*/
typedef uint32_t trishort;
typedef uint64_t trilong;
typedef uintptr_t addr;
typedef struct trs {
uint8_t l; /* длина троичного числа в тритах */
trilong tb; /* двоичное битовое поле троичного числа */
} trs_t;
You do not have the required permissions to view the files attached to this post.
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
-
- Novelist
- Posts: 25
- Joined: 16 Jun 2018 14:35
Re: Троичная ЭВМ "Сетунь" (1958)
Code: Select all
/* Тип данных BCTD */
struct tryte
{
uint16 positive : 9;
uint16 negative : 9;
};
/* Тип данных BCTD */
struct trites
{
uint8 pos1 : 1;
uint8 pos2 : 1;
uint8 pos3 : 1;
uint8 pos4 : 1;
uint8 pos5 : 1;
uint8 pos6 : 1;
uint8 pos7 : 1;
uint8 pos8 : 1;
uint8 pos9 : 1;
uint8 neg1 : 1;
uint8 neg2 : 1;
uint8 neg3 : 1;
uint8 neg4 : 1;
uint8 neg5 : 1;
uint8 neg6 : 1;
uint8 neg7 : 1;
uint8 neg8 : 1;
uint8 neg9 : 1;
};
оба варианта собственно и есть 18 бит на 1 трайт, по 2 бита на трит.
(я собрался реализовывать под х86, но полезную логику переписать под ARMv4,ARMv5 и ARMv8 смогу, но интерфейс взаимодействия с пользователем и с ОС на армах это не ко мне - под полезной логикой имеется в виду только эмуляция(троичные операции над этими типами) и ничего кроме)
-
- Devil
- Posts: 798
- Joined: 04 Jan 2016 09:15
- Location: Russia, S.- Peterburg
Re: Троичная ЭВМ "Сетунь" (1958)
Birchpunk, [03.04.21 11:58]
Ячейки первой «Сетуни» в работали двухбитном троичном коде, то есть один трит записывался в два двоичных разряда, четвёртое состояние двух двоичных разрядов не использовалось. Состояние каждого разряда на пульте управления отображалось двумя лампочками, а четвёртая комбинация (1, 1) не использовалась.
Кстати, в мире Birchpunk троичная логика получила широкое распространение, и все ЭВМ и прошивка роботов (даже Глаша!) тоже основаны на троичной логике, что породило ругательно-экспрессивное междометие «Триты-биты».
Кроме того, использование троичной логики помогло решить множество сложнейших вопросов человечества. В частности, прорыв был совершён в области квантовой механики – у кота Шрёдингера, всё отлично, уверяем вас. Наконец-то был решён философский вопрос со стаканом – он изначально был не только наполовину полон или наполовину пуст!
Birchpunk, [03.04.21 11:58]
Влияние было оказано даже на антропологию и культуру. Трайт из 6 тритов принято интерпретировать как целое число в диапазоне от -364 до 364. Поэтому день программиста отмечают дважды – 1 января и 30 декабря. Ходят слухи, что некоторые программисты даже не успевают сделать перерыв!
#BirchPunk #BirchPunkLore #Setun
Читай полную версию в новой рубрике #BirchPunkLore эксклюзивно в нашем канале Телеграмма.
https://t.me/birchpunkofficial/6
Ячейки первой «Сетуни» в работали двухбитном троичном коде, то есть один трит записывался в два двоичных разряда, четвёртое состояние двух двоичных разрядов не использовалось. Состояние каждого разряда на пульте управления отображалось двумя лампочками, а четвёртая комбинация (1, 1) не использовалась.
Кстати, в мире Birchpunk троичная логика получила широкое распространение, и все ЭВМ и прошивка роботов (даже Глаша!) тоже основаны на троичной логике, что породило ругательно-экспрессивное междометие «Триты-биты».
Кроме того, использование троичной логики помогло решить множество сложнейших вопросов человечества. В частности, прорыв был совершён в области квантовой механики – у кота Шрёдингера, всё отлично, уверяем вас. Наконец-то был решён философский вопрос со стаканом – он изначально был не только наполовину полон или наполовину пуст!
Birchpunk, [03.04.21 11:58]
Влияние было оказано даже на антропологию и культуру. Трайт из 6 тритов принято интерпретировать как целое число в диапазоне от -364 до 364. Поэтому день программиста отмечают дважды – 1 января и 30 декабря. Ходят слухи, что некоторые программисты даже не успевают сделать перерыв!
#BirchPunk #BirchPunkLore #Setun
Читай полную версию в новой рубрике #BirchPunkLore эксклюзивно в нашем канале Телеграмма.
https://t.me/birchpunkofficial/6
You do not have the required permissions to view the files attached to this post.
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
-
- Devil
- Posts: 798
- Joined: 04 Jan 2016 09:15
- Location: Russia, S.- Peterburg
Re: Троичная ЭВМ "Сетунь" (1958)
ВЗГЛЯД ВО ВРЕМЕНА «Большого железа»
( Конспект статьи: https://habr.com/ru/company/ruvds/blog/553740 )
Увидел прототип будущей панели для "Сетунь". Именно такой дизайн надписи "Сетунь 58/20".
Из списка книг и работ Николая Петровича, с большим интересом , прочитал о миникомпьютерах. Хотелось понять источник идей для реализации одноадресных команд в Сетунь-1958. Миникомпьютеры серии PDP в ней подробно рассмотрены.
"Миникомпьютеры" Брусенцов Н.П. М.: Наука, 1979. — 272 с.: илл. — (Библиотечка программиста).
"...
Миникомпьютер — это тот вариант цифровой машины, в котором она стала, наконец, действенным орудием производства. Книга представляет собой попытку раскрыть сущность миникомпьютеров. Показать, каким образом достигнута необыкновенная практичность, обусловившая лавинообразное увеличение их выпуска и быстрое проникновение во все сферы жизни. Главное внимание уделено особенностям архитектуры миникомпьютеров, таким как экономная адресация и управление ходом программы в условиях короткого машинного слова, микрооперационное преобразование данных, оперативное взаимодействие с периферией. В качестве образцов подробно описана архитектура важнейших миникомпьютерных семейств. Книга рассчитана как на разработчиков, так и на потребителей миникомпьютерной техники.
...")
( Конспект статьи: https://habr.com/ru/company/ruvds/blog/553740 )
Увидел прототип будущей панели для "Сетунь". Именно такой дизайн надписи "Сетунь 58/20".
Из списка книг и работ Николая Петровича, с большим интересом , прочитал о миникомпьютерах. Хотелось понять источник идей для реализации одноадресных команд в Сетунь-1958. Миникомпьютеры серии PDP в ней подробно рассмотрены.
"Миникомпьютеры" Брусенцов Н.П. М.: Наука, 1979. — 272 с.: илл. — (Библиотечка программиста).
"...
Миникомпьютер — это тот вариант цифровой машины, в котором она стала, наконец, действенным орудием производства. Книга представляет собой попытку раскрыть сущность миникомпьютеров. Показать, каким образом достигнута необыкновенная практичность, обусловившая лавинообразное увеличение их выпуска и быстрое проникновение во все сферы жизни. Главное внимание уделено особенностям архитектуры миникомпьютеров, таким как экономная адресация и управление ходом программы в условиях короткого машинного слова, микрооперационное преобразование данных, оперативное взаимодействие с периферией. В качестве образцов подробно описана архитектура важнейших миникомпьютерных семейств. Книга рассчитана как на разработчиков, так и на потребителей миникомпьютерной техники.
...")
You do not have the required permissions to view the files attached to this post.
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
-
- Supreme God
- Posts: 16676
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Троичная ЭВМ "Сетунь" (1958)
Книга есть в нашей библиотеке: Брусенцов - Миникомпьютерыaskfind wrote:"Миникомпьютеры" Брусенцов Н.П. М.: Наука, 1979. — 272 с.: илл. — (Библиотечка программиста).
iLavr
-
- Supreme God
- Posts: 16676
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Троичная ЭВМ "Сетунь" (1958)
Хорошая статейка попалась про логические элементы на ферритовых кольцах.askfind wrote:Моделирование троичных элементов на ферритовых кольцах.
Феррит-диодные ячейки. Старая импульсная логика. История цифровой техники.
Упомянута и ячейка компенсации, которая так не понравилась Брусенцову.
You do not have the required permissions to view the files attached to this post.
iLavr
-
- Devil
- Posts: 798
- Joined: 04 Jan 2016 09:15
- Location: Russia, S.- Peterburg
Re: Троичная ЭВМ "Сетунь" (1958)
Точнее схема прототипа троичного цифрового элемента, который использовали в лаборатории электромоделирования под руководством Л.И. Гутенмахера на феррит-диодные трехактные элементы автоматики этого типа разрабатывалась вычислительная машина ЛЭМ-1.Lavr wrote:Упомянута и ячейка компенсации, которая так не понравилась Брусенцову.askfind wrote:Моделирование троичных элементов на ферритовых кольцах.
Главная проблема в том, что феррит-диодные трехактные элементы потребляли большой ток и ненадёжные. Брак при производстве составлял до 80%.
Фотографии феррит-диодной вычислительной машины тех лет можно посмотреть в книге [1].
Ссылки:
1. Дейнеко В.Н. Макурин П.С. Чернобай В.В., Феррит-диодные трехактные элементы автоматики и вычислительной техники. // [Текст] .- Москва, Ленинград .- Издательство Энергия .- 1966 г. - 96 стр., с чертеж.
You do not have the required permissions to view the files attached to this post.
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
-
- Devil
- Posts: 798
- Joined: 04 Jan 2016 09:15
- Location: Russia, S.- Peterburg
Re: Троичная ЭВМ "Сетунь" (1958)
Новая версия эмулятора троичного "Сетунь"
Несколько месяцев назад приостановил окончательную отладку троичной машины. Испытывал несколько вариантов хранения тритов в памяти двоичного микроконтроллера. Получился запутанный код: тяжёлый и медленный.
У создателя "Сетунь" Николая Петрович Брусенцова и инженеров в 50-х годах получилась работать красиво. В том числе код математического обеспечения для "железной" троичной машины.
Решил вернуться к проекту и начать "от печки".
Создал проект на языке Golang https://github.com/askfind/goTernaryArithmetic "Троичная арифметика". Цель исследовать производительность операций над тритами и троичными числами из тритов. Язык программирования Golang включает инструменты тестирования и измерения производительности. Перевод фрагментов кода с языка С на Golang не составляет больших усилий программиста.
Лучший способ создать новый тип данных, который легко и быстро выполняется на обычных двоичных микроконтроллерах выглядит так:
Это троичное число длиной из 32-тритов (TRITS-32). Для машины "Сетунь-1958" это даже избыточно. Именно тип данных uint32_t в регистрах ARM-32,64 бита выполняются максимально быстро. В перспективе можно сделать реализацию троичных операция на чистом ассемблере. Компилятор языка С хорошо оптимизирует С-код проекта.
Приступил к окончательной отладке малой троичной машины:
Ссылка на проект здесь - https://github.com/askfind/Emulator-Setun-1958
Многие просят ссылки на книги, документацию, методические пособия по математическому обеспечению МЦВМ "Сетунь". Разместил в каталоге https://github.com/askfind/Emulator-Set ... umentation проекта.
$> ./Emulator-Setun-1958$ ./emu
Благодарю участников форума за терпение и подсказки, концентрированную информацию по троичности!
Несколько месяцев назад приостановил окончательную отладку троичной машины. Испытывал несколько вариантов хранения тритов в памяти двоичного микроконтроллера. Получился запутанный код: тяжёлый и медленный.
У создателя "Сетунь" Николая Петрович Брусенцова и инженеров в 50-х годах получилась работать красиво. В том числе код математического обеспечения для "железной" троичной машины.
Решил вернуться к проекту и начать "от печки".
Создал проект на языке Golang https://github.com/askfind/goTernaryArithmetic "Троичная арифметика". Цель исследовать производительность операций над тритами и троичными числами из тритов. Язык программирования Golang включает инструменты тестирования и измерения производительности. Перевод фрагментов кода с языка С на Golang не составляет больших усилий программиста.
Лучший способ создать новый тип данных, который легко и быстро выполняется на обычных двоичных микроконтроллерах выглядит так:
Code: Select all
typedef struct trs {
uint8_t l; /* длина троичного числа в тритах */
uint32_t t1; /* троичное число FALSE,TRUE */
uint32_t t0; /* троичное число NIL */
} trs_t;
Приступил к окончательной отладке малой троичной машины:
Ссылка на проект здесь - https://github.com/askfind/Emulator-Setun-1958
Многие просят ссылки на книги, документацию, методические пособия по математическому обеспечению МЦВМ "Сетунь". Разместил в каталоге https://github.com/askfind/Emulator-Set ... umentation проекта.
$> ./Emulator-Setun-1958$ ./emu
Code: Select all
[ Registers Setun-1958: ]
K: [000000000], (0), 00000
F: [00000], (0), 000
C: [-1-1-1-1-1], (-121), WWW
W: [0], (0), 0
ph1: [0], (0), 0
ph2: [0], (0), 0
S: [000000000000000000], (0), 0000000000
R: [000000000000000000], (0), 0000000000
MB: [0000], (0), 000
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
-
- Devil
- Posts: 798
- Joined: 04 Jan 2016 09:15
- Location: Russia, S.- Peterburg
Re: Троичная ЭВМ "Сетунь" (1958)
Эмулятор VM 'Setun-1958'
Новости
Выделяю в отдельные тесты троичные операции и проверку эмулятора.
Новости
Выделяю в отдельные тесты троичные операции и проверку эмулятора.
Тест троичной арифметики с тритами:// TEST_NUMBER:
// 1 : Test Arithmetic Ternary
// 2 : Test Arithmetic TRITS-32
// 3 : Test Arithmetic Registers VM Setun-1958
// 4 : Test FRAM VM Setun-1958
// 5 : Test DRAM VM Setun-1958
// 6 : Test Instructiron VM Setun-1958
// 7 : Test Program VM Setun-1958
#define TEST_NUMBER (1)
Code: Select all
--- TEST #1 Logic opertion trits for VM SETUN-1958 ---
1.1. Логическая операция NOT
C = NOT A
a,c {-1}-> 1
a,c { 0}-> 0
a,c { 1}->-1
1.2. Логическая операция AND
C = A AND B
a,b,c {-1,-1}-> 1
a,b,c {-1, 0}-> 0
a,b,c {-1, 1}->-1
a,b,c { 0,-1}-> 0
a,b,c { 0, 0}-> 0
a,b,c { 0, 1}-> 0
a,b,c { 1,-1}->-1
a,b,c { 1, 0}-> 0
a,b,c { 1, 1}-> 1
1.2. Логическая операция OR
C = A OR B
a,b,c {-1,-1}->-1
a,b,c {-1, 0}-> 0
a,b,c {-1, 1}-> 1
a,b,c { 0,-1}-> 0
a,b,c { 0, 0}-> 0
a,b,c { 0, 1}-> 1
a,b,c { 1,-1}-> 1
a,b,c { 1, 0}-> 1
a,b,c { 1, 1}-> 1
1.3. Логическая операция XOR
C = A XOR B
a,b,c {-1,-1}-> 1
a,b,c {-1, 0}->-1
a,b,c {-1, 1}-> 0
a,b,c { 0,-1}->-1
a,b,c { 0, 0}-> 0
a,b,c { 0, 1}->-1
a,b,c { 1,-1}-> 0
a,b,c { 1, 0}-> 1
a,b,c { 1, 1}->-1
1.4. Логическая операция SUM FULL
C, P1 = A + B + P0
a,b,p0,c,p1 {-1,-1,-1}-> 0,-1
a,b,p0,c,p1 {-1,-1, 0}-> 1,-1
a,b,p0,c,p1 {-1,-1, 1}->-1, 0
a,b,p0,c,p1 {-1, 0,-1}-> 1,-1
a,b,p0,c,p1 {-1, 0, 0}->-1, 0
a,b,p0,c,p1 {-1, 0, 1}-> 0, 0
a,b,p0,c,p1 {-1, 1,-1}->-1, 0
a,b,p0,c,p1 {-1, 1, 0}-> 0, 0
a,b,p0,c,p1 {-1, 1, 1}-> 1, 0
a,b,p0,c,p1 { 0,-1,-1}-> 1,-1
a,b,p0,c,p1 { 0,-1, 0}->-1, 0
a,b,p0,c,p1 { 0,-1, 1}-> 0, 0
a,b,p0,c,p1 { 0, 0,-1}->-1, 0
a,b,p0,c,p1 { 0, 0, 0}-> 0, 0
a,b,p0,c,p1 { 0, 0, 1}-> 1, 0
a,b,p0,c,p1 { 0, 1,-1}-> 0, 0
a,b,p0,c,p1 { 0, 1, 0}-> 1, 0
a,b,p0,c,p1 { 0, 1, 1}->-1, 1
a,b,p0,c,p1 { 1,-1,-1}->-1, 0
a,b,p0,c,p1 { 1,-1, 0}-> 0, 0
a,b,p0,c,p1 { 1,-1, 1}-> 1, 0
a,b,p0,c,p1 { 1, 0,-1}-> 0, 0
a,b,p0,c,p1 { 1, 0, 0}-> 1, 0
a,b,p0,c,p1 { 1, 0, 1}->-1, 1
a,b,p0,c,p1 { 1, 1,-1}-> 1, 0
a,b,p0,c,p1 { 1, 1, 0}->-1, 1
a,b,p0,c,p1 { 1, 1, 1}-> 0, 1
--- END TEST #1 ---
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
-
- Devil
- Posts: 798
- Joined: 04 Jan 2016 09:15
- Location: Russia, S.- Peterburg
Re: Троичная ЭВМ "Сетунь" (1958)
--- TEST #2 Operations TRITS-32 for VM SETUN-1958 ---
Пройдены тесты операций с троичными числами 32 трита.
Пройдены тесты операций с троичными числами 32 трита.
Code: Select all
/**
* Filename: "emusetun.c "
*
* Project: Виртуальная машина МЦВМ "Сетунь" 1958 года на языке Си
*
* Create date: 01.11.2018
* Edit date: 10.09.2021
*
* Version: 1.36
*/
Code: Select all
./emu --test 2
...
t2.12 --- inc_trs(...)
tr1 =: [+0-0+---], 3X2W, (1958), {10-101-1-1-1}
inc_trs(&tr1)
tr1 =: [+0-0+--0], 3X2X, (1959), {10-101-1-10}
t2.13 --- dec_trs(...)
tr1 =: [+0-0-+0-], 3XYZ, (1925), {10-10-110-1}
dec_trs(&tr1)
tr1 =: [+0-0-+-+], 3XYY, (1924), {10-10-11-11}
t2.14 --- add_trs(...)
tr1 =: [+---+], 1WY, (43), {1-1-1-11}
tr2 =: [+0-+0], 1Z3, (75), {10-110}
tr1 = add_trs(tr1,tr2)
tr1 =: [+++0+], 141, (118), {11101}
t2.15 --- sub_trs(...)
tr1 =: [+0-+00--], 3Y0W, (2021), {10-1100-1-1}
tr2 =: [+0-0+--+], 3X2Y, (1960), {10-101-1-11}
tr1 = sub_trs(tr1,tr2)
tr1 =: [000+-+-+], 01YY, (61), {0001-11-11}
t2.15 --- shift_trs(...)
tr1 =: [0000+0000], 00100, (81), {000010000}
tr1 = shift_trs(tr1,-2)
tr1 =: [00+000000], 01000, (729), {001000000}
tr1 = shift_trs(tr1,-2)
tr1 =: [+00000000], 10000, (6561), {100000000}
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
-
- Devil
- Posts: 798
- Joined: 04 Jan 2016 09:15
- Location: Russia, S.- Peterburg
Re: Троичная ЭВМ "Сетунь" (1958)
--- TEST #3 Operations for VM SETUN-1958 ---
Добавлен тест операций с регистрами и операциями "Сетунь-1958"
Добавлен тест операций с регистрами и операциями "Сетунь-1958"
Code: Select all
t3.6 --- S = S + R
S: [0000000000000+---+], 0000001WY, (43), {00000000000001-1-1-11}
R: [0000000000000+0-+0], 0000001Z3, (75), {000000000000010-110}
S=S+R: [0000000000000+++0+], 000000141, (118), {000000000000011101}
t3.7 --- next_address(...)
beg C: [000--], 00W, (-4), {000-1-1}
next C: [000-0], 00X, (-3), {000-10}
next C: [000-+], 00Y, (-2), {000-11}
next C: [00000], 000, (0), {00000}
next C: [0000+], 001, (1), {00001}
next C: [000+0], 003, (3), {00010}
next C: [000++], 004, (4), {00011}
next C: [00+-0], 01X, (6), {001-10}
next C: [00+-+], 01Y, (7), {001-11}
next C: [00+00], 010, (9), {00100}
next C: [00+0+], 011, (10), {00101}
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
-
- Devil
- Posts: 798
- Joined: 04 Jan 2016 09:15
- Location: Russia, S.- Peterburg
Re: Троичная ЭВМ "Сетунь" (1958)
RUN program for VM SETUN-1958 ---
Новости:
Отладка выполнения команд эмулятора троичного компьютера "Сетунь-1958".
Новости:
Отладка выполнения команд эмулятора троичного компьютера "Сетунь-1958".
Code: Select all
[ Start Setun-1958 ]
--- Reset Setun-1958 ---
[ Registers Setun-1958: ]
K : [000000000], 00000, (0), {000000000}
F : [00000], 000, (0), {00000}
C : [00000], 000, (0), {00000}
W : [0], 00, (0), {0}
ph1: [0], 00, (0), {0}
ph2: [0], 00, (0), {0}
S : [000000000000000000], 000000000, (0), {000000000000000000}
R : [000000000000000000], 000000000, (0), {000000000000000000}
MB : [0000], 00, (0), {0000}
--- Load 'ur0/01-test.txs' ---
01yz0 -> [01YZ0] addr: [----0], ZWX, (-120), {-1-1-1-10}
0110x -> [0110X] addr: [----+], ZWY, (-119), {-1-1-1-11}
101x0 -> [101X0] addr: [---00], ZW0, (-117), {-1-1-100}
11wx4 -> [11WX4] addr: [---0+], ZW1, (-116), {-1-1-101}
11wxy -> [11WXY] addr: [---+0], ZW3, (-114), {-1-1-110}
~~~~
14444 -> [14444] addr: [+++0+], 141, (118), {11101}
00300 -> [00300] addr: [++++0], 143, (120), {11110}
00300 -> [00300] addr: [+++++], 144, (121), {11111}
--- EOF 'test-1.txs' ---
reg C = 00001
A*=[-+++-], ( -43), k6..8[-+-] : Норм.(S)=>(A*); (N)=>(S)
A*=[--+-+], ( -74), k6..8[+0-] : (S)-(A*)=>(S)
A*=[+-+-+], ( 88), k6..8[0+-] : A*=>(C) при w=0
A*=[00000], ( 9), k6..8[+--] : (A*)=>(R)
A*=[00000], ( -75), k6..8[+00] : (A*)=>(S)
A*=[00000], ( -45), k6..8[+0-] : (S)-(A*)=>(S)
A*=[+-+++], ( 94), k6..8[0+-] : A*=>(C) при w=0
A*=[00000], ( 3), k6..8[+--] : (A*)=>(R)
A*=[-+++-], ( -43), k6..8[+00] : (A*)=>(S)
A*=[00000], ( -72), k6..8[-+0] : (A*)=>(S)
A*=[00000], ( -75), k6..8[+0+] : (S)+(A*)=>(S)
A*=[00000], ( 102), k6..8[0+-] : A*=>(C) при w=0
A*=[---++], ( 4), k6..8[+--] : (A*)=>(R)
A*=[00000], ( 60), k6..8[0--] : (F)+(A*)=>(F)
A*=[00000], ( 54), k6..8[0+-] : A*=>(C) при w=+1
A*=[00000], ( 87), k6..8[0-0] : (A*)=>(F)
A*=[-++-+], ( -47), k6..8[00-] : (F)=>(A*)
A*=[-+-+-], ( -61), k6..8[+00] : (A*)=>(S)
A*=[-++--], ( -46), k6..8[-++] : (S)=>(A*)
A*=[00000], ( -75), k6..8[0-0] : (A*)=>(F)
A*=[+----], ( 41), k6..8[-++] : (S)=>(A*)
A*=[00000], ( 60), k6..8[0--] : (F)+(A*)=>(F)
A*=[++-++], ( 112), k6..8[0+-] : A*=>(C) при w=+1
A*=[00000], ( 51), k6..8[0-0] : (A*)=>(F)
A*=[-----], (-112), k6..8[-0+] : (Фа*)=>(Мд*)
A*=[00000], ( -72), k6..8[0--] : (F)+(A*)=>(F)
A*=[+++-+], ( 118), k6..8[0+-] : A*=>(C) при w=-1
A*=[---++], ( -32), k6..8[+++] : (S)+(A*)(R)=>(S)
A*=[00000], ( 3), k6..8[000] : A*=>(C)
A*=[--+-+], ( -74), k6..8[+0-] : (S)-(A*)=>(S)
A*=[+-+-+], ( 88), k6..8[0+-] : A*=>(C) при w=0
A*=[00000], ( 9), k6..8[+--] : (A*)=>(R)
A*=[00000], ( -75), k6..8[+00] : (A*)=>(S)
A*=[00000], ( -45), k6..8[+0-] : (S)-(A*)=>(S)
A*=[+-+++], ( 94), k6..8[0+-] : A*=>(C) при w=0
A*=[00000], ( 3), k6..8[+--] : (A*)=>(R)
A*=[-+++-], ( -43), k6..8[+00] : (A*)=>(S)
A*=[00000], ( -72), k6..8[-+0] : (A*)=>(S)
A*=[00000], ( -75), k6..8[+0+] : (S)+(A*)=>(S)
A*=[00000], ( 102), k6..8[0+-] : A*=>(C) при w=0
A*=[---++], ( 4), k6..8[+--] : (A*)=>(R)
A*=[00000], ( 60), k6..8[0--] : (F)+(A*)=>(F)
A*=[00000], ( 54), k6..8[0+-] : A*=>(C) при w=+1
A*=[-+++-], ( -43), k6..8[+-+] : (A*)=>(R)
A*=[00000], ( -48), k6..8[+00] : (A*)=>(S)
A*=[--+-+], ( -71), k6..8[+0+] : (S)+(A*)=>(S)
A*=[00000], ( -96), k6..8[-++] : (S)=>(A*)
A*=[-++--], ( -46), k6..8[+00] : (A*)=>(S)
A*=[00000], ( -75), k6..8[+-0] : (A*)[x](S)=>(S)
A*=[00000], ( -96), k6..8[+0+] : (S)+(A*)=>(S)
A*=[00000], ( -96), k6..8[-++] : (S)=>(A*)
A*=[00000], ( 0), k6..8[000] : A*=>(C)
A*=[00000], ( -45), k6..8[00+] : (C)=>(A*)
A*=[-+++-], ( -43), k6..8[-+-] : Норм.(S)=>(A*); (N)=>(S)
A*=[--+-+], ( -74), k6..8[+0-] : (S)-(A*)=>(S)
A*=[+-+-+], ( 88), k6..8[0+-] : A*=>(C) при w=0
A*=[00000], ( 9), k6..8[+--] : (A*)=>(R)
A*=[00000], ( -75), k6..8[+00] : (A*)=>(S)
A*=[00000], ( -45), k6..8[+0-] : (S)-(A*)=>(S)
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
-
- Devil
- Posts: 798
- Joined: 04 Jan 2016 09:15
- Location: Russia, S.- Peterburg
Re: Троичная ЭВМ "Сетунь" (1958)
TEST#3 Operations for VM SETUN-1958
Новости:
Приближается время "Ч". Продолжаю проверки выполнения команд эмулятора Сетунь из памяти FRAM.
./emu --test 3
Новости:
Приближается время "Ч". Продолжаю проверки выполнения команд эмулятора Сетунь из памяти FRAM.
Запуск теста с номером 3:* TEST#3 Operations
* +00 (A*)=>(S) Ok'
* -++ (S)=>(A*) Ok'
* +-+ (A*)=>(R) Ok'
* 0-0 (A*)=>(F) Ok'
* 00- (F)=>(A*) Ok'
* 00+ (C)=>(A*) Ok'
* +0+ (S)+(A*)=>(S) Ok'
* +0- (S)-(A*)=>(S) Ok'
./emu --test 3
Code: Select all
t3.17: Oper=k6..8[+0-] : (S)-(A*)=>(S)
fram[00000] ( 0: 0) = [0000000++], 00004
S=: [000000000000000+0+], 000000011, (10), {000000000000000101}
fram[0000+] ( 0: 1) = [00000+0-0], 0003X
reg C = 00001
K=: [00000+0-0], 0003X, (24), {0000010-10}
A*=[00000], ( 0), k6..8[+0-] : (S)-(A*)=>(S)
[status: ERR#5]
[DUMP registers Setun-1958]
K : [00000+0-0], 0003X, (24), {0000010-10}
F : [00000], 000, (0), {00000}
C : [0000+], 001, (1), {00001}
W : [-], Z, (-1), {-1}
ph1: [-], Z, (-1), {-1}
ph2: [0], 0, (0), {0}
S : [000000000000000+-0], 00000001X, (6), {0000000000000001-10}
R : [000000000000000000], 000000000, (0), {000000000000000000}
MB : [0000], 00, (0), {0000}
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
-
- Devil
- Posts: 798
- Joined: 04 Jan 2016 09:15
- Location: Russia, S.- Peterburg
Re: Троичная ЭВМ "Сетунь" (1958)
Реализация эмулятора. GUI для дисплея.
Две версии.
С появлением платы ESP32 VGA приступил к проектированию визуальной части эмулятора.
Есть дизайн web-эмулятора http://trinary.su/projects/setunws
Хочется сделать полезный. План в том, сам эмулятор - это практические комплект rjvgm.nthysq из дисплея, клавиатуры и мыши. На платке есть MicroSD и на нём будет образ диска с программами для Сетунь-1958.
Есть предложения и пожелания?
Две версии.
С появлением платы ESP32 VGA приступил к проектированию визуальной части эмулятора.
Есть дизайн web-эмулятора http://trinary.su/projects/setunws
Хочется сделать полезный. План в том, сам эмулятор - это практические комплект rjvgm.nthysq из дисплея, клавиатуры и мыши. На платке есть MicroSD и на нём будет образ диска с программами для Сетунь-1958.
Есть предложения и пожелания?
You do not have the required permissions to view the files attached to this post.
Last edited by askfind on 19 Feb 2022 03:22, edited 2 times in total.
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)