Казалось бы - дата правильная, информация верная... А на самом деле - полное введение в заблуждение посетителей сайта. То, что представлено на снимке - это действительно промышленный образец ЭВМ "Сетунь", вот только выпущен он в 1961 году!
То, что в 1958 году собрали Брусенцов и его коллеги, скорее всего представлено именно на этом фото:
А вот на следующем фото - Серийный образец ЭВМ Сетунь, изготовленный по КД СКБ ММ:
И при этом они очень удивляются некоторым датам:
Quote:
9 декабря 2008 года в МГУ имени Ломоносова была проведена юбилейная конференция "50 лет со времени создания малой цифровой ЭВМ СЕТУНЬ". Мероприятие получило большую прессу, было сказано много хорошего о Главном конструкторе Н.П. Брусенцове, о коллективе разработчиков. ... Не очень понятно, почему 50 лет машине отмечали в 2008 году. Испытания макета в МГУ были в апреле 1960 г., опытный образец серийной машины прошёл испытания в ноябре 1962 г. Видимо, у учёных принято отмечать (как у японцев) день зачатия, а не день рождения.
Публикации по троичной информатике и троичным компьютерам Сайт о троичности http://trinary.su/
Восстановил ссылки на документы.
"... 1. Н.П.Брусенцов, О вычитании и округлении чисел в позиционных системах счисления с положительным основанием 2. Н.П.Брусенцов, Об использовании троичного кода и трёхзначной логики в цифровых машинах 3. Н.П.Брусенцов, Математическая теория силлогистики 4. Н.П.Брусенцов, Пороговая реализация трёхзначной логики электромагнитными средствами 5. Н.П.Брусенцов, Алгоритмы деления для троичного кода с цифрами 0, 1, -1 6. Н.П.Брусенцов, Е.А.Жоголев, Структура и функционирование малой вычислительной машины 7. С.П.Маслов, Вопросы построения запоминающих устройств для троично-кодированной информации 8. С.П.Маслов, Комбинированное троичное запоминающее устройство 9. С.П.Маслов, Некоторые вопросы магнитной записи троичного кода 10. С.П.Маслов, Троичное запоминающее устройство на магнитном барабане 11. X.Рамиль Альварес, Программная интерпретация структуры и системы команд малой ЭВМ 12. X.Рамиль Альварес, Простые алгоритмы переводов р -> p-1 и р -> р + 1 13. Ю.В.Ушаков , Долговременное запоминающее устройства для машины «Сетунь» ..."
Идея перевода кодов операторов "Сетунь-1958" мне понравилась.
Есть особенность описание кодов операций с использованием мнемоники. Операции выполняются с различными длинами слов из трит. Длина данных в троичном компьютере [1],[1...5],[1...9],[1...18]. При переводе необходимо будет учитывать длины данных.
_________________ "Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
Для краткой записи троичных симметричных кодов применяется алфавит симметричной девятеричной системы, с символами: W, X, Y, Z, 0, 1, 2, 3, 4. Существует вариант с буквами русского алфавита: Ж, Х, У, Ц, 0, 1, 2, 3, 4.
Необходимо переводить из симметричной девятеричной системы в троичный симметричных код операции Сетунь из Таблицы операций:
Если помедитировать над описанием к эмулятору, то на ум приходит только одно, незначащий нулевой трит нужно дописывать не слева, а справа: Считывание с МБ -0- -0 -0 x x Вывод-ввод -00 -0 00 x 0
Если помедитировать над описанием к эмулятору, то на ум приходит только одно, незначащий нулевой трит нужно дописывать не слева, а справа: Считывание с МБ -0- -0 -0 x x Вывод-ввод -00 -0 00 x 0
Авторы кодов операций Сетунь использовали, действительно, четыре трита 'k6..k8k9' для кодирования в девятеричную систему.
Книга: Ю.В.Ревич, Б.Н.Малиновский, "Информационные технологии в СССР. Создатели советской вычислительной техники"
Изд. БХВ-Петербург, 2014 г. ISBN 978-5-9775-3309-6, с. 336, с ил. тир. 1000
"... Показано, что представляла собой советская отрасль информационных технологий в реальности, без преувеличений и излишнего самоуничижения.
Сборник составлен из очерков, посвященных создателям отечественной вычислительной техники советского периода. Вы узнаете о том, что в СССР существовала довольно развитая компьютерная отрасль, обеспечившая научные и военные нужды государства, созданная совершенно самостоятельно и нередко превосходившая зарубежные достижения.
Авторы прослеживают все этапы ее развития, от создания первых компьютеров до распада самой страны, и подробно разбирают причины сдачи завоеванных позиций.е этапы ее развития, от создания первых компьютеров до распада самой страны, и подробно разбирают причины сдачи завоеванных позиций. ..."
"... стр. 245
Статья Б.Н.Малиновский "Николай Петрович Брусенцов"
Приложение: Вычислительная машина "Сетунь" Московского Государственного университета. ..."
Attachments:
book_pg245.png [ 522.69 KiB | Viewed 6258 times ]
book_pg1.png [ 296.83 KiB | Viewed 6258 times ]
_________________ "Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
Попробовал поиграться с синтаксисами (так и эдак) но факт остается фактом - компилируются мнемоники в троичные данные успешно. Создается BCTD файл (файл двоично кодированных тернарных данных). формат BCTD такой: каждый трайт задается 2 байтами и следующими за ними 2мя битами,из которых первые 9 бит соответствуют нахождению тритов трайта в положительном состоянии, а следующие 9 трит - в отрицательном, EOF такого файла - разновидность несуществующего BCTD, где значение последнего трайта представлено всеми положительными тритами, но младший трит одновременно отрицательный.Сами данные не выравнены на границу байт, а вот последние биты обязательно дозаполняются нулями до целого байта. Можно создавать метки для джампов (с оговоркой адрес равен (n-n/4)2, где n равен адресу метки, но и тут все оригинально, в сетуни код загружается только по "хитрочетным" (адресам не оканчивающимися на "-") адресам. Ну а так все компилится. Компилятор используется fasmg
Code:
; 1 tryte = 2 byte+2bits ; FILE END errorneus BCT 11111111,1_0000000,01_000000 (pos:111111111,neg:000000001) postpone db padbyte or (-1 shl padshift),$FF shr (7-padshift),2 shl padshift end postpone
padshift = 0 padbyte = 0
macro extract_components value,outpos:0,outneg:0,size:0 local Number,Carry,Digit,?topos if value Number=value if Number<0 ?topos = -1 Number = -Number else ?topos = 1 end if Carry=0 while Number if size&size*9<% err value couldn`t fit end if Digit = Carry + Number mod 3 Number = Number / 3 if Digit < 2 Carry = 0 else Digit = Digit - 3 Carry = 1 end if if Digit = ?topos outpos = outpos or 1 shl (%-1) else if Digit = -?topos outneg = outneg or 1 shl (%-1) end if if ~Number if Carry = ?topos outpos = outpos or 1 shl % else if Carry = -?topos outneg = outneg or 1 shl % end if end if end while end if end macro
macro tryte value local v,pos,neg,block,idx,size v = value pos = 0 neg = 0 extract_components v,pos,neg,1 db (padbyte + (pos shl padshift)) and $FF,(pos shr (7-padshift) + neg shl (1+padshift)) and $FF if padshift = 6 db (neg shr (7-padshift)) and $FF padshift = 0 padbyte = 0 else padshift = padshift + 2 padbyte = (neg shr (7-padshift)) and $FF end if end macro
macro dt? definitions& iterate value,definitions match n =dup? v, value repeat n tryte v end repeat else tryte value end match end iterate end macro
struc dt? definitions& label . : byte iterate value,definitions match n =dup? v, value repeat n tryte v end repeat else tryte value end match end iterate end struc
macro jmp addr dt addr*81 end macro
macro jz addr dt 3+addr*81 end macro
macro jn addr dt 2+addr*81 end macro
macro jp addr dt 4+addr*81 end macro
macro ld reg,val match ,val dt 9+reg*81 else match =S,reg dt 9+val*81 else match =R,reg dt 7+val*81 else match =F,reg dt -3+val*81 end match end macro
macro add reg,val match ,val dt 10+reg*81 else match =S,reg dt 10+val*81 else match =F,reg dt -4+val*81 end match end macro
macro rel val dt -2+val*81 end macro
macro sub reg,val match ,val dt 8+reg*81 else match =S,reg dt 8+val*81 end match end macro
macro mov op1,op2 match [val],op1 match ,op2 dt 9+val*81 ;+00 ; send to S; mov S,[imm] ; mov [imm] else match =F,op2 dt -1+val*81 ;00- ; get from F; mov [imm],F else match =C,op2 dt 1+val*81 ;00+ ; get from C; mov [imm],C else match =S,op2 dt -5+val*81 ;-++ ; get from S; mov [imm],S else err 'invalid operand' end if else match [val],op2 match =F,op1 dt -3+val*81 ;0-0 ; send to F; mov F,[imm] else match =R,op1 dt 7+val*81 ;+-+ ; send to R; mov R,[imm] else match =S,op1 dt 9+val*81 ;+00 ; send to S; mov S,[imm] ; mov [imm] else err 'invalid combination of operands' end if else err 'invalid combination of operands' end if end macro
macro ter_instr opcode,param dt opcode+param*81 end macro
macro add op1,op2,op3 match ,op3 match ,op2 match [val],op1 dt 10+val*81 ; +0+ ; sum to S; add S,[imm]; add [imm] else match =R*[val],op1 dt 13+val*81 ; +++ ; scaled sum to S; add S,R*[imm]; add S,[imm]*R; add R*[imm]; add [imm]*R else match [val]*=R,op1 dt 13+val*81 ; +++ ; scaled sum to S; add S,R*[imm]; add S,[imm]*R; add R*[imm]; add [imm]*R else err 'invalid combination of operands' end if else match [val],op2 match =S,op1 dt 10+val*81 ; +0+ ; sum to S; add S,[imm]; add [imm] else match =S*=R,op1 err 'invalid combination of operands' else err 'invalid combination of operands' end if end macro
; выше команды на выполнение непосредственно компилятору (макросы и прочее - все то что формирует выходной формат и синтаксис) ; ниже команды на языке (теперь) доступного синтаксиса, которые непосредственно формируют (полезное) содержание выходного файла.
девятиричные строки - это команды джава интерфейса. а не сетуни. Записывать число буквами это чисто джавишный изврат. Сетунь работала с трайтами, а не с девятеричным представлением этих трайтов. И информация на перфокартах вводилась в виде непрерывного потока трайтов, писульки в виде 9ричного представления люди писали для себя. 18 бит BCTD - максимально близкое к трайту представление. А отображать его проще 27ричным числом - 3мя группами по 3 разряда. то что 27ричные цифры отсутствовали - проблема небольшая, цифры я уже придумал. внести в шрифт как бы получилось, но писать их полученным шрифтом - нет. Но рисовать буквы, вернее цифры, можно и не шрифтом а через рисование примитивов GDI.
В главе 2 "Представление числел и команд", параграф 3 "Кодирование при вводе и выводе" описывается представление троичных команд при программировании. В главе 5 "Ввод и вывод данных" есть несколько вариантов ввода и вывода.
В книгах в серии "Математическое обслуживание для машин "Сетунь" приводятся распечатки программ. Оформлены в виде девятиричных троичных строк.
В виртуальных устройствах ввода/вывода будут текстовые файлы с командами, числами и символами текста:
Команды для ввода или вывода
перфолента в виде текстового файла со строками 'ooo.oo'
перфолента в виде текстового файла со строками '+00--+000' (новый формат)
перфолента в виде текстового файла со строками '01yz0' (новый формат)
По моим куцым данным на перфоленте не было ASCII символов. На перфоленте были вертикальные и горизонтальные прорези и отсутствие оных. (Но я могу ошибаться) так или иначе реализовывать я буду в своем формате BCTD (а пользователю отображать в виде 27-ричных чисел), но поскольку я сторонник опенсорца приделать этому костыли девятиричности сможете сами.
по операциям: загрузка с магнитного барабана происходит в одну из третей доступного адресного пространства. Начинается все с загрузки серединного адресного пространства и выполнения инструкции по адресу 1. Но то начинается... А какое поведение у инструкции после? Допустим в коде встретилась инструкция загрузки вновь серединного адресного пространства все "...0" и "...+" трайты переписываются и управление переходит куда? на инструкцию с адресом 1? на инструкцию следующую за инструкцией в которой была команда на запись с барабана? А если загрузка не в серединное адресное пространство, а в отрицательное (там где старший трит "-") то куда переходит управление в этом случае? опять на инструкцию с адресом 1? или на 81 трайт меньше адреса 1? или на инструкцию следующую за инструкцией в которой была команда на запись с барабана?
По моим куцым данным на перфоленте не было ASCII символов. На перфоленте были вертикальные и горизонтальные прорези и отсутствие оных.
Гл. V "Ввод и вывод данных" [1]
Бумажная лента: Пятипозиционная.
Можно кодировать: - Команды - Числа - Символы
Имеются специальные комбинации:
"Цировой регистр",
"Буквенный регистр",
"Подчёркивание",
"Стоп",
"Возврат каретки",
"Перевод строки".
При выводе в виде символов управление всеми действиями пишущей машинки ( или телетайпа) осуществляются в формате 27-ричных комбинаций данными. Остальные 22 комбинации позволяют на машинке с двумя регистрами печатать 44 различными знака.
ProMiNick wrote:
реализовывать я буду в своем формате BCTD (а пользователю отображать в виде 27-ричных чисел), но поскольку я сторонник опенсорца приделать этому костыли девятиричности сможете сами.
Где подробно посмотреть о таком представлении троичных чисел?
ProMiNick wrote:
по операциям: загрузка с магнитного барабана происходит в одну из третей доступного адресного пространства.
Обмен зонами. Да, так.
ProMiNick wrote:
Начинается все с загрузки серединного адресного пространства и выполнения инструкции по адресу 1. Но то начинается...
Специальная кнопка на пульте "Начальный пуск", когда с перфоленты считываются данные в зону ферритовой памяти Z=0, регистр счетчика команд устанавливается С=00001 и далее передаётся управление на выполнение команд.
ProMiNick wrote:
А какое поведение у инструкции после?
Допустим в коде встретилась инструкция загрузки вновь серединного адресного пространства все "...0" и "...+" трайты переписываются и управление переходит куда? на инструкцию с адресом 1? на инструкцию следующую за инструкцией в которой была команда на запись с барабана?
После выполнения кода операции машины определяется адрес следующего кода операции.
Новый адрес 9-разрядного кода K1...K9 ячейки в ферритовой памяти находится в регистре С.
В твоём примере, после чтения зоны с магнитного барабана, прочитается новый 9-разрядный короткий код по адресу регистра С.
ProMiNick wrote:
А если загрузка не в серединное адресное пространство, а в отрицательное (там где старший трит "-") то куда переходит управление в этом случае? опять на инструкцию с адресом 1? или на 81 трайт меньше адреса 1?
на инструкцию следующую за инструкцией в которой была команда на запись с барабана?
При кодах операций безусловного перехода или условных переходов в регистре С младший трит может быть отрицательным.
Описание в [1]:
Quote:
5-разрядный регистр управления С, в котором содержится адрес выполняемой команды, после выполнения каждой команды в регистре С формируется адрес следующей команды причём за командой являющейся первой коротким кодом какой-либо ячейки, следует команда, являющаяся вторым коротким кодом этой ячейки, а вслед за ней — команда, являющаяся первым коротким кодом следующей ячейки, и т. д.; этот порядок может быть нарушен при выполнении команд перехода.
В случае, когда в качестве адреса команды указан адрес 18-разрядной ячейки, т.е. адрес с цифрой !1 в пятом разряде, машина выполняет два раза выполняет команды, в старшей половине.
Адресный счётчик троичного "Сетунь" - самая запутанная часть документации.
Почему именно так, не очевидно, работает счётчик команд - не могу объяснить.
В эмуляторе многократно переписывал модель ферритовой памяти и функцию определения следующего адреса команды и выполнение кода при с адресом в последней цифре !1.
В поздней работе Брусенцов Н.П. [2] описал модель ферритовой памяти и памяти магнитного барабана:
Quote:
Адресное пространство главной памяти простирается от -(35-1)/2 до (35- 1)/2, т. е. от -121 до +121, но так как каждый третий адрес использован для указания пары ячеек, обладающих каждая отдельным адресом, то адресовать можно только 162 девятитритных ячейки и 81 пару ячеек.
Последовательная выборка команд производится с пропуском адресов, соответствующих парам ячеек, т. е. программный счетчик принимает следующие значения: -120, -119, -117, -116, ..., -3, -2, 0, 1, 3, 4, ..., 117, 118, 120, 121.
При обменах с внешней памятью, которая реализована на магнитном барабане и является основной памятью машины, а также при вводе и выводе главная память представляется разделенной на страницы, содержащие по 54 ячейки. Номером страницы служит значение старшего трита принадлежащих этой странице адресов.
Другими словами, память структурирована как массив
Users browsing this forum: No registered users and 18 guests
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum