Эмулятор "Сетунь-1958"
Вернулся к проекту эмулятора троичного компьютера "Сетунь-1958". Сегодня стартую setun_corever. 4
Скачал доступную литературу и статьи по первой и выпускаемой на заводе вычислительной машине "Сетунь".
Реализацию троичного эмулятора хочется сделать компактной, переносимой на мелкие двоичные процессоры. Запустить интерпретатор ИП-2 из математического обеспечения "Сетунь". Реализовать систему обучения (программирование человеческих мозгов) "Наставник". Написать троичный TBasic Setun.
Сейчас у меня структура тритов такая:
Code: Select all
/* Размер троичного числа */
#define SIZE_WORD_SHORT (9)
#define SIZE_WORD_LONG (18)
/* Тип данных троичное целое число */
typedef struct trin {
int n;
int trit[SIZE_WORD_EMUL];
} trit_t;
Код разрастается. Много преобразований из троичного представления в двоичное. Эмоционально
А ведь в КБ МГУ, под руководством Н.П.Брусенцова, предложили архитектуру троичного компьютера с целью использовать минимальное количество ферритовых цифровых элементов (Общее количество магнитных усилителей в машине — 3500. Количество других элементов сравнительно мало: транзисторов — 330, электронных ламп — 37, электромагнитных реле — 10.).
Выполнение операций в цифровых элементах происходит параллельно по тактам Ф1,Ф2. При тактовой частоте F = 200 кГц позволяла обеспечить выполнение простых операций t=180 мксек.
Рука не поднимается писать программу, которая будет эмулировать работу Сетунь медленнее образца их прошлого!
Количество строк кода эмулятора Сетунь:
Code: Select all
$wc -l setun_core_ver2.c
1109 setun_core_ver2.c
Отладочная информация в терминале:
Code: Select all
A=0 [0] (0) ,
K=0 [0] (0) ,
F=0 [0] (0) ,
WF=0 [0] (0) ,
C=0 [0] (0) ,
S=0 [0] (0) ,
WS=0 [0] (0) ,
R=0 [0] (0) ,
WR=0 [0] (0) ,
C=5 [-1-1-1-10] (-120) , ZWX
C=5 [-1-1-1-11] (-119) , ZWY
C=5 [-1-1-100] (-117) , ZW0
C=5 [-1-1-101] (-116) , ZW1
C=5 [-1-1-110] (-114) , ZW3
A=9 [000001000] (27) , 00030
Второй вариант тритов как тип данных это
Code: Select all
/* Тип данных троичное целое число */
typedef struct trs {
int w;
long int h;
long int l;
} trs_t;
Кодирование одного трита:
[b1b0] -> [t0]
00 - "0"
01 - "-"
10 - "+"
11 - "0"
Далее сдвигать на два двоичных разряда и выполнять троичные операции машины Сетунь.
Упрощается эмуляция ферритовой памяти (9-трит), памяти на магнитном барабане. Хранить нужно 32-разряда битов по адресу ферритовой памяти.
Что посоветуете?
You do not have the required permissions to view the files attached to this post.
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)