nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 12:56



Reply to topic  [ 362 posts ]  Go to page Previous  1 ... 8, 9, 10, 11, 12, 13, 14 ... 25  Next
Троичная ЭВМ "Сетунь" (1958) 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
askfind wrote:
В 1959? Это опечатка!

А вот, кстати, с датой ситуация тоже очень и очень неоднозначная... :-?

К примеру, смотрим сайт: http://www.icfcst.kiev.ua/MUSEUM/PHOTOS/Setun-1_r.html
Attachment:
Сетунь1958.png
Сетунь1958.png [ 300.49 KiB | Viewed 6298 times ]

Казалось бы - дата правильная, информация верная...
А на самом деле - полное введение в заблуждение посетителей сайта. То, что представлено на снимке -
это действительно промышленный образец ЭВМ "Сетунь", вот только выпущен он в 1961 году!

То, что в 1958 году собрали Брусенцов и его коллеги, скорее всего представлено именно на этом фото:

Image

Но вот я читаю интервью с директором НИВЦ МГУ Владимиром Валентиновичем Воеводиным.
https://scientificrussia.ru/articles/nivts-mgu-ot-strely-do-lomonosov-2
В.В.Воеводин wrote:
В стенах вычислительного центра была спроектирована уникальная система — компьютер «Сетунь».
И к интервью приложена следующая картинка:
Attachment:
Сетунь.png
Сетунь.png [ 236.01 KiB | Viewed 6298 times ]

Ну и, наконец, я искал картинку ЭВМ "Сетунь" покрупнее, скачал её вот отсюда:
http://letopis.msu.ru/letopis/1962
Attachment:
Setun 1959.jpg
Setun 1959.jpg [ 190.57 KiB | Viewed 6298 times ]

На сайте МГУ картинка обозначена как Setun 1959, как ни странно...

С другой стороны, если послушать представителей завода-изготовителя ЭВМ "Сетунь",
то они считают, что вот это - "Макет Сетуни":

Image

А вот на следующем фото - Серийный образец ЭВМ Сетунь, изготовленный по КД СКБ ММ:

Image

И при этом они очень удивляются некоторым датам:
Quote:
9 декабря 2008 года в МГУ имени Ломоносова была проведена юбилейная конференция "50 лет со времени создания малой цифровой ЭВМ СЕТУНЬ". Мероприятие получило большую прессу, было сказано много хорошего о Главном конструкторе Н.П. Брусенцове, о коллективе разработчиков.
...
Не очень понятно, почему 50 лет машине отмечали в 2008 году. Испытания макета в МГУ были в апреле 1960 г., опытный образец серийной машины прошёл испытания в ноябре 1962 г. Видимо, у учёных принято отмечать (как у японцев) день зачатия, а не день рождения.

_________________
iLavr


16 Feb 2021 19:16
Profile
Doomed
User avatar

Joined: 04 Jan 2016 09:15
Posts: 649
Location: Russia, S.- Peterburg
Reply with quote
Lavr wrote:
askfind wrote:
В 1959? Это опечатка!

А вот, кстати, с датой ситуация тоже очень и очень неоднозначная... :-?


Отличный обзор исследования даты рождения прототипа компьютера "Сетунь"!

_________________
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)


16 Feb 2021 21:33
Profile WWW
Doomed
User avatar

Joined: 04 Jan 2016 09:15
Posts: 649
Location: Russia, S.- Peterburg
Reply with quote
МЫСЛЬ о ТРОИЧНОЙ ЛОГИКЕ



Книги по троичной логике:

Брусенцов Н.П. - Блуждание в трёх соснах - 2004 - https://yadi.sk/i/0oib-ici_xTXsg
Брусенцов Н.П. - Искусство достоверного рассуждения - 1998 - https://yadi.sk/i/rri9rDgU2fhjmw
Брусенцов Н.П. - Начала информатики - 1994 - https://yadi.sk/i/lffLOsHJ07pZUA

Учебник классической логике:

Виноградов С.Н., Кузьмин А.Ф. - Логика. Учебник для средней школы - 1954 - https://yadi.sk/i/SKTE22Woqid0_w

_________________
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)


17 Feb 2021 21:21
Profile WWW
Doomed
User avatar

Joined: 04 Jan 2016 09:15
Posts: 649
Location: Russia, S.- Peterburg
Reply with quote
Публикации по троичной информатике и троичным компьютерам

Сайт о троичности
http://trinary.su/

Восстановил ссылки на документы.

"...
1. Н.П.Брусенцов, О вычитании и округлении чисел в позиционных системах счисления с положительным основанием
2. Н.П.Брусенцов, Об использовании троичного кода и трёхзначной логики в цифровых машинах
3. Н.П.Брусенцов, Математическая теория силлогистики
4. Н.П.Брусенцов, Пороговая реализация трёхзначной логики электромагнитными средствами
5. Н.П.Брусенцов, Алгоритмы деления для троичного кода с цифрами 0, 1, -1
6. Н.П.Брусенцов, Е.А.Жоголев, Структура и функционирование малой вычислительной машины
7. С.П.Маслов, Вопросы построения запоминающих устройств для троично-кодированной информации
8. С.П.Маслов, Комбинированное троичное запоминающее устройство
9. С.П.Маслов, Некоторые вопросы магнитной записи троичного кода
10. С.П.Маслов, Троичное запоминающее устройство на магнитном барабане
11. X.Рамиль Альварес, Программная интерпретация структуры и системы команд малой ЭВМ
12. X.Рамиль Альварес, Простые алгоритмы переводов р -> p-1 и р -> р + 1
13. Ю.В.Ушаков , Долговременное запоминающее устройства для машины «Сетунь»
..."


Attachments:
brusnecov_01.pdf [52.36 KiB]
Downloaded 195 times
brusnecov_01_page1.png
brusnecov_01_page1.png [ 80.45 KiB | Viewed 6232 times ]

_________________
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
20 Feb 2021 22:10
Profile WWW
Doomed
User avatar

Joined: 04 Jan 2016 09:15
Posts: 649
Location: Russia, S.- Peterburg
Reply with quote
Коды операций и ассемблер для "Сетунь-195"

Пример из онлайн "СетуньВС" - http://www.trinary.su/projects/setunws/
перенёс в эмулятор на языке Си - https://github.com/askfind/Emulator-Setun-1958

Запускаю TEST 1:

Code:
[ Start Setun-1958 ]

reg C = 00001
A*=[-+++-], ( -43),    k6..8[-+-] : Норм.(S)=>(A*); (N)=>(S)
A*=[-0+-+], ( -74),    k6..8[+0-] : (S)-(A*)=>(S)
A*=[+0+-+], (  88),    k6..8[0+-] : A*=>(C) при w=0
A*=[0-++-], ( -16),    k6..8[000] : A*=>(C)
A*=[-+0--], ( -58),    k6..8[+0-] : (S)-(A*)=>(S)
A*=[-+0+-], ( -52),    k6..8[+0-] : (S)-(A*)=>(S)
A*=[-+0--], ( -58),    k6..8[+-+] : (A*)=>(R)
A*=[-+-+-], ( -61),    k6..8[+++] : (S)+(A*)(R)=>(S)
A*=[-+-+-], ( -61),    k6..8 =[]   : STOP! NO OPERATION

 - ret_exec = 5
 - opers    = 10000

[ Stop Setun-1958 ]


Нашёл интересную ветку автора ProMiNick

Quote:
terna=deci: tritvalue action mnemonic ternary mnemonic decimal
-----=-121: 00+-+0-00 (A*)=>(F) mov F,[00+-+] ;mov F,[7]
----0=-120: 00+0+00-0 (F)=>(A*) mov [00+0+],F ;mov [10],F
----+=-119: +000+-000 Вводв Фà*. Вывод из Фà*
---0-=-118: +0+---0++ (Ôà*)+F=>(Ìä*)
---00=-117: +0+---0-+ (Ìä*)+F=>(Ôà*)
---0+=-116: 000+00-00 (A*)=>(F) mov F,[000+0] ;mov F,[3]
---+-=-115: 0+--0+000 (A*)=>(S) mov S,[0+--0] ;mov S,[15]
---+0=-114: 00++--++0 (S)=>(A*) mov [00++-],S ;mov [11],S
---++=-113: ----0+00+ (A*)=>(S) mov S,[----0 + F] ;mov S,[F-120]
--0--=-112: 00+-0-+00 (S) íà (A*)=>(S) shift S,[00+-0] ;shift S,[6]
--0-0=-111: 00++-+0+0 (S)+(A*)=>(S) add S,[00++-] ;add S,[11]
--0-+=-110: 00++--++0 (S)=>(A*) mov [00++-],S ;mov [11],S
--00-=-109: 00+-+0--0 (F)+(A*)=>(F) add F,[00+-+] ;add F,[7]
--000=-108: 0-0000+-0 A*=>(C) ïðè w=- jn 0-000 ;jneg -27
--00+=-107: 0-+++0++0 A*=>(C) ïðè w=+ jp 0-+++ ;jpos -14
--0+-=-106: 000++0-00 (A*)=>(F) mov F,[000+0] ;mov F,[3]
--0+0=-105: 0-0000000 A*=>(C) call 0-000 ; mov C,[0-000] ;call -27
--0++=-104: 00+0+0-00 (A*)=>(F) mov F,[00+0+] ;mov F,[10]
--+--=-103: 0+-0-+0-+ (S)-(A*)+F=>(S) sub S,[0+-0- + F] ;sub S,[F+17]
--+-0=-102: 00-+00+00 A*=>(C) ïðè w=0 jz 00-+0 ;jzer -6
--+-+=-101: 00000+--0 (A*)=>(R) STOP ;make STOP


Идея перевода кодов операторов "Сетунь-1958" мне понравилась.

Есть особенность описание кодов операций с использованием мнемоники. Операции выполняются с различными длинами слов из трит. Длина данных в троичном компьютере [1],[1...5],[1...9],[1...18].
При переводе необходимо будет учитывать длины данных.

_________________
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)


21 Feb 2021 12:59
Profile WWW
Doomed
User avatar

Joined: 04 Jan 2016 09:15
Posts: 649
Location: Russia, S.- Peterburg
Reply with quote
Вопрос участникам:

Как переводить код операции машины "Сетунь-1958"?

Quote:
Для краткой записи троичных симметричных кодов применяется алфавит симметричной девятеричной системы, с символами: W, X, Y, Z, 0, 1, 2, 3, 4. Существует вариант с буквами русского алфавита: Ж, Х, У, Ц, 0, 1, 2, 3, 4.


Необходимо переводить из симметричной девятеричной системы в троичный симметричных код операции Сетунь из Таблицы операций:

Использую калькулятор: http://trinary.su/kb/18153031-8224-4357-a1a3-b839a41632cf.html

1. Считывние с магнитного барабана в ферритовую память
Девятеричная: !3!3 => Троичная: -0-0
Девятеричная: XX


Т.е. вместо 3-тритов операции получилось 4 штуки. Должно быть три!

2.Вывод-ввод на внешние устройства
Девятеричная: !30 => Троичная: -000
Девятеричная: X0


Т.е. вместо 3-тритов операции опять получилось 4 трита.


Attachments:
commands_setun_1958_mini.png
commands_setun_1958_mini.png [ 105.59 KiB | Viewed 6196 times ]

_________________
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
22 Feb 2021 00:57
Profile WWW
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
Если помедитировать над описанием к эмулятору, то на ум приходит только одно, незначащий нулевой трит нужно дописывать не слева, а справа:
Считывание с МБ
-0-
-0 -0
x x
Вывод-ввод
-00
-0 00
x 0

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


22 Feb 2021 05:09
Profile WWW
Doomed
User avatar

Joined: 04 Jan 2016 09:15
Posts: 649
Location: Russia, S.- Peterburg
Reply with quote
b2m wrote:
Если помедитировать над описанием к эмулятору, то на ум приходит только одно, незначащий нулевой трит нужно дописывать не слева, а справа:
Считывание с МБ
-0-
-0 -0
x x
Вывод-ввод
-00
-0 00
x 0


Авторы кодов операций Сетунь использовали, действительно, четыре трита 'k6..k8k9' для кодирования в девятеричную систему.


k6..k8k9 = "-0-0" => 'XX' => !3!3 Считывание с МБ           -     (Мд*)=>(Фа*)

_________________
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)


23 Feb 2021 02:12
Profile WWW
Doomed
User avatar

Joined: 04 Jan 2016 09:15
Posts: 649
Location: Russia, S.- Peterburg
Reply with quote
Книга:
Ю.В.Ревич, Б.Н.Малиновский, "Информационные технологии в СССР. Создатели советской вычислительной техники"

Изд. БХВ-Петербург, 2014 г. ISBN 978-5-9775-3309-6, с. 336, с ил. тир. 1000

"...
Показано, что представляла собой советская отрасль информационных технологий в реальности, без преувеличений и излишнего самоуничижения.

Сборник составлен из очерков, посвященных создателям отечественной вычислительной техники советского периода. Вы узнаете о том, что в СССР существовала довольно развитая компьютерная отрасль, обеспечившая научные и военные нужды государства, созданная совершенно самостоятельно и нередко превосходившая зарубежные достижения.

Авторы прослеживают все этапы ее развития, от создания первых компьютеров до распада самой страны, и подробно разбирают причины сдачи завоеванных позиций.е этапы ее развития, от создания первых компьютеров до распада самой страны, и подробно разбирают причины сдачи завоеванных позиций.
..."

"...
стр. 245

Статья Б.Н.Малиновский "Николай Петрович Брусенцов"

Приложение: Вычислительная машина "Сетунь" Московского Государственного университета.
..."


Attachments:
book_pg245.png
book_pg245.png [ 522.69 KiB | Viewed 6131 times ]
book_pg1.png
book_pg1.png [ 296.83 KiB | Viewed 6131 times ]

_________________
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
23 Feb 2021 09:57
Profile WWW
Novelist

Joined: 16 Jun 2018 14:35
Posts: 25
Reply with quote
Попробовал поиграться с синтаксисами (так и эдак)
но факт остается фактом - компилируются мнемоники в троичные данные успешно.
Создается 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

;setun ternary opcodes
UD1             =-13
UD2             =-12
UD3             =-11
MBread          =-10
IO              =-9
MBwrite         =-8
Snorm           =-7
Sshift          =-6
Ssave           =-5
Fadd            =-4
Fload           =-3
Frel            =-2
Fsave           =-1
Jump            = 0
Link            = 1
JumpNeg         = 2
JumpZero        = 3
JumpPos         = 4
Halt            = 5
Sproduct        = 6
Rload           = 7
Ssub            = 8
Sload           = 9
Sadd            = 10
Smuladd         = 11
Smul            = 12
Saddscaled      = 13

;macro jmp_instr [name,opcode]
;        macro name addr
;                ;not all addresses allowed, test them
;                dt opcode+addr*81
;        end macro
;end macro

;jmp_instr jmp,Jump,\
;          jz,JumpZero,\
;          jn,JumpNeg,\
;          jp,JumpPos

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 

; выше команды на выполнение непосредственно компилятору (макросы и прочее - все то что формирует выходной формат и синтаксис)
; ниже команды на языке (теперь) доступного синтаксиса, которые непосредственно формируют (полезное) содержание выходного файла.

 

dt 3 ; можно определять как троичные данные

jmp 5; так и инструкции


24 Feb 2021 03:55
Profile
Doomed
User avatar

Joined: 04 Jan 2016 09:15
Posts: 649
Location: Russia, S.- Peterburg
Reply with quote
ProMiNick wrote:
Попробовал поиграться с синтаксисами (так и эдак)
но факт остается фактом - компилируются мнемоники в троичные данные успешно.


Испытал в linux:

Репозиторий ассемблера: fasmg - https://github.com/tgrysztar/fasmg

Создал пример:
Code:
>$ cat test1.asm
include 'hex.inc'
include 'setun_1958.inc'

ORG 0001
   jmp   0001


Code:
>& cat test1.hex
:040000000200008278
:050001000602C07F8033
:00000001FF


Code:
setun_1958$ tree -L 1
.
├── hex.inc
├── setun_1958.inc
├── test1.asm
└── test1.hex

0 directories, 4 files


Подскажи как преобразовать выходной файл к виду девятиричных
01yz0
0110x
101x0
команд "Сетунь"?

_________________
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)


24 Feb 2021 07:35
Profile WWW
Novelist

Joined: 16 Jun 2018 14:35
Posts: 25
Reply with quote
девятиричные строки - это команды джава интерфейса. а не сетуни.
Записывать число буквами это чисто джавишный изврат.
Сетунь работала с трайтами, а не с девятеричным представлением этих трайтов.
И информация на перфокартах вводилась в виде непрерывного потока трайтов, писульки в виде 9ричного представления люди писали для себя.
18 бит BCTD - максимально близкое к трайту представление.
А отображать его проще 27ричным числом - 3мя группами по 3 разряда.
то что 27ричные цифры отсутствовали - проблема небольшая, цифры я уже придумал. внести в шрифт как бы получилось, но писать их полученным шрифтом - нет. Но рисовать буквы, вернее цифры, можно и не шрифтом а через рисование примитивов GDI.


24 Feb 2021 09:01
Profile
Doomed
User avatar

Joined: 04 Jan 2016 09:15
Posts: 649
Location: Russia, S.- Peterburg
Reply with quote
ProMiNick wrote:
девятиричные строки - это команды джава интерфейса. а не сетуни.


Мне хочется максимально точно воспроизвести работу троичной машины Сетунь.

Брусенцов Н.П., Маслов С.П., Розин В.П., Тишулина A.M. Малая цифровая вычислительная машина "Сетунь". // [Текст] .- Москва.- Изд-во МГУ.- 1965. - 136 стр. - с прил. - чертеж. - тираж 5000 экз. - цена 50 коп.

В главе 2 "Представление числел и команд", параграф 3 "Кодирование при вводе и выводе" описывается представление троичных команд при программировании.
В главе 5 "Ввод и вывод данных" есть несколько вариантов ввода и вывода.

В книгах в серии "Математическое обслуживание для машин "Сетунь" приводятся распечатки программ. Оформлены в виде девятиричных троичных строк.

В виртуальных устройствах ввода/вывода будут текстовые файлы с командами, числами и символами текста:

Команды для ввода или вывода

  • перфолента в виде текстового файла со строками 'ooo.oo'
  • перфолента в виде текстового файла со строками '+00--+000' (новый формат)
  • перфолента в виде текстового файла со строками '01yz0' (новый формат)


Code:
.
├── lpt0
├── ptp0
├── ptr0
├── ptr1
├── tty0
├── up0
├── ur0
└── ur1

_________________
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)


25 Feb 2021 06:50
Profile WWW
Novelist

Joined: 16 Jun 2018 14:35
Posts: 25
Reply with quote
По моим куцым данным на перфоленте не было ASCII символов.
На перфоленте были вертикальные и горизонтальные прорези и отсутствие оных.
(Но я могу ошибаться)
так или иначе реализовывать я буду в своем формате BCTD (а пользователю отображать в виде 27-ричных чисел), но поскольку я сторонник опенсорца приделать этому костыли девятиричности сможете сами.

по операциям: загрузка с магнитного барабана происходит в одну из третей доступного адресного пространства.
Начинается все с загрузки серединного адресного пространства и выполнения инструкции по адресу 1.
Но то начинается...
А какое поведение у инструкции после?
Допустим в коде встретилась инструкция загрузки вновь серединного адресного пространства все "...0" и "...+" трайты переписываются и управление переходит куда? на инструкцию с адресом 1? на инструкцию следующую за инструкцией в которой была команда на запись с барабана?
А если загрузка не в серединное адресное пространство, а в отрицательное (там где старший трит "-") то куда переходит управление в этом случае? опять на инструкцию с адресом 1? или на 81 трайт меньше адреса 1? или на инструкцию следующую за инструкцией в которой была команда на запись с барабана?


25 Feb 2021 15:24
Profile
Doomed
User avatar

Joined: 04 Jan 2016 09:15
Posts: 649
Location: Russia, S.- Peterburg
Reply with quote
ProMiNick wrote:
По моим куцым данным на перфоленте не было 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 ячейки. Номером страницы служит значение старшего трита принадлежащих этой странице адресов.

Другими словами, память структурирована как массив

m(-1:1, -80:81, 1:9)



1. Брусенцов Н.П., Маслов С.П., Розин В.П., Тишулина A.M. Малая цифровая вычислительная машина "Сетунь". // [Текст] .- Москва.- Изд-во МГУ.- 1965. - 136 стр. - с прил. - чертеж. - тираж 5000 экз. - цена 50 коп.

2. Н. П. Брусенцов, ЗАМЕТКИ О ТРОИЧНОЙ ЦИФРОВОЙ ТЕХНИКЕ - ЧАСТЬ 2.


Attachments:
setun_io.png
setun_io.png [ 285.59 KiB | Viewed 5994 times ]

_________________
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
27 Feb 2021 05:54
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 362 posts ]  Go to page Previous  1 ... 8, 9, 10, 11, 12, 13, 14 ... 25  Next

Who is online

Users browsing this forum: No registered users and 13 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

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.