nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 23 Nov 2020 21:35



Reply to topic  [ 34 posts ]  Go to page Previous  1, 2, 3
Компьютер Tryte-I 
Author Message
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18964
Location: Silicon Valley
Reply with quote
Shaos wrote:
В частной переписке petrenko подсказал интересную идею - можно явно разделить команды и данные (скажем буквы/цифры) - например команды могут быть всегда отрицательными трайтами (и нулевая команда будет NOP), а в случае положительного трайта мы интерпретируем его как символ ASCII-кода (больше 0, но меньше 256) либо как какой-то высокоуровневый код (>=256 - тэг бейсика?). Например, если исполняющее устройство встречает положительный трайт, то оно его добавляет в некий строковый буфер и идёт дальше, пока не встретит отрицательный трайт, который либо сбросит буфер, либо что-то с ним сделает. Таким образом можно из кода вводить числа (на подобие старых советских калькуляторов) либо делать передачу управления по именам, а не по адресам (типа шитый код аля-форт) - понятно, что будет чуть дольше, но зато какое удобство программирования!

По прошествии почти пяти лет поменял таки систему команд для поддержки такого варианта (см. первое сообщение этого топика) - т.е. мы будем как в калькуляторах писать символы друг за другом и они при этом будут выводиться на экран (если флаг вывода N), будут читаться подпрограммой прямо из кода (если флаг вывода O - при этом все ASCII инструкции будут просто пропускаться) или будут передаваться в сеть (если флаг вывода P) - причём я планирую задействовать практически все символы управления ASCII (с кодами до 31), а таблица букв будет расширена до кода 283 POPPPP...

P.S. Кстати с октября 2015 у меня есть домен http://tryte.one :lol:

_________________
:eugeek: https://twitter.com/Shaos1973


24 May 2020 21:26
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18964
Location: Silicon Valley
Reply with quote
Примеры кода - вывод текста на экран:
Code:
'H'
'e'
'l'
'l'
'o'

или даже просто вот так:
Code:
"Hello"


Передача строки в подпрограмму:
Code:
TEXT "Hello",0 ; ноль в конце это тоже самое, что и инструкция NOP
CALL sub ; при вызове в YZ будет адрес строки, записанный туда инструкцией TEXT


Передача строки получателю с индексом 1:
Code:
MVI A,1
EM "Hello"
EOT ; End of Transmission переведёт текстовый режим вывода обратно в вывод на экран


По флагам пока 3 штуки набралось:

trit 0 - flagC (флаг заёма-переноса, который в 3niti alpha назывался BCF);
trit 1 - flagS (флаг знака результата, который в 3niti alpha назывался RSF);
trit 2 - flagT (флаг режима вывода текста - см.выше);

и ещё осталось место для 3 флагов...

_________________
:eugeek: https://twitter.com/Shaos1973


24 May 2020 22:51
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18964
Location: Silicon Valley
Reply with quote
Возможная шина расширения - типа троичная ISA-шина (Ln - левый контакт, Rn - правый контакт):
Code:
L1  A0   IO0 R1
L2  A1   IO1 R2
L3  A2   IO2 R3
L4  A3   IO3 R4
L5  A4   IO4 R5
L6  A5   IO5 R6
L7  A6   CTL R7  <<< control (P-read, N-write)
L8  A7   SEL R8  <<< selected if O
L9  A8   IRQ R9  >>> interrupt request ?
L10 A9   ACK R10 <<< interrupt acknowledge ?
L11 A10  HLD R11 >>> hold the processor ?
L12 A11  CLS R12 >>> class of the board (O for 6-trit data)
L13 rsrerved R13
L14 reserved R14
L15 reserved R15
L16 reserved R16
L17 reserved R17
L18 reserved R18
L19   VNEG   R19
L20    GND   R20
L21   VPOS   R21

_________________
:eugeek: https://twitter.com/Shaos1973


27 May 2020 21:23
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18964
Location: Silicon Valley
Reply with quote
Для компактного представления троичных чисел можно использовать тот же подход, что и при наименовании регистров предложен:

NNN (-13) - A
NNO (-12) - B
NNP (-11) - C
NON (-10) - D
NOO (-9) - E
NOP (-8) - F
NPN (-7) - G
NPO (-6) - H
NPP (-5) - I
ONN (-4) - J
ONO (-3) - K
ONP (-2) - L
OON (-1) - M
OOO (0) - N
OOP (1) - O
OPN (2) - P
OPO (3) - Q
OPP (4) - R
PNN (5) - S
PNO (6) - T
PNP (7) - U
PON (8) - V
POO (9) - W
POP (10) - X
PPN (11) - Y
PPO (12) - Z
PPP (13) - @

т.е. например самое большое 24-тритное число будет выглядеть как @@@@@@@@

P.S. Интересно, что NOP попадают на 0,1,2 - по идее если их сдвинуть на 1 шаг назад, то они попадут куда надо -1,0,+1

NNN (-13) - B
NNO (-12) - C
NNP (-11) - D
NON (-10) - E
NOO (-9) - F
NOP (-8) - G
NPN (-7) - H
NPO (-6) - I
NPP (-5) - J
ONN (-4) - K
ONO (-3) - L
ONP (-2) - M
OON (-1) - N
OOO (0) - O
OOP (1) - P

OPN (2) - Q
OPO (3) - R
OPP (4) - S
PNN (5) - T
PNO (6) - U
PNP (7) - V
PON (8) - W
POO (9) - X
POP (10) - Y
PPN (11) - Z
PPO (12) - @
PPP (13) - A

в таком случае самое большое 24-тритное число будет выглядеть как AAAAAAAA (+141214768240)

P.P.S. Либо надо забыть про компактное представление многотритных чисел и просто писать обычные десятичные числа как +141214768240

_________________
:eugeek: https://twitter.com/Shaos1973


30 May 2020 14:46
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 34 posts ]  Go to page Previous  1, 2, 3

Who is online

Users browsing this forum: No registered users and 2 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:  
cron
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.