Я что-то уже несколько раз споткнулся об этот вопрос...
Это можно трактовать как "инкремент и декремент", но
в пределах одного трита.
Если у нас, скажем, трёхтритное слово, то применительно к слову целиком это НЕ БУДЕТ "инкремент и декремент".
Инкремент и декремент - это
А+1 и
А-1 - они у нас в АЛУ так и останутся:
INR и
DCR.
А
Rotate Up и
Rotate Down -
потритное циклическое отрицание, правый цикл и левый цикл.
Поэтому предлагаю ввести их мнемоники как
RUP и
RDN.
Значит вот что точно имеем по меньшей мере:
ADD - сумирование (оно же вычитание) без учета флага переноса.
ADС - сумирование (оно же вычитание) с учетом флага переноса.
INR - увеличение на 1.
DCR - уменьшение на 1.
RUP - Rotate Up, потритное циклическое отрицание, правый цикл
RDN - Rotate Down, потритное циклическое отрицание, левый цикл.
AND - потритное логическое ...
OR - потритное логическое ...
XOR - потритное логическое ... (он же будет выполнять побитный NOT)
;---------- вот их уже 9.
Но нам нужны сдвиги. Я их назвал:
ROR - циклический сдвиг вправо;
ROL - циклический сдвиг влево;
Почему не
RAR и
RAL? У меня не получилось без усложнения схемы копировать крайний
бит во флаг
С.
Поэтому
ROR и
ROL просто крутят аккумулятор не влияя на флаг
С. Уж как есть.
Мы где-то долго обсуждали, кто нужнее:
RAR и
RAL или
RRС и
RLС, но пришли к выводу,
что главное, чтобы был сам сдвиг, а с крайними битами можно манипулировать программно.
Теперь с флагами: как я понял, флагов будет только два
S-знак и
С-перенос(заем).
Поскольку теперь у нас троичность, то вот этих операций, видимо, будет недостаточно:
STC, CLC, CMC.Mожет быть ввиду троичности свернуть операции с флагами в две?
LFA -
Load
Flags to
Accumulator;
SFA -
Set
Flags from
Accumulator;
Короче - с флагами надо подумать серьёзно...
Особенно с флагом
S-знак - в троичности это знак старшего
значащего трита.
А
значащий трит может быть на любом месте в трайте, что затрудняет его выделение аппаратно.
Собственно,
S-знак = 0, когда все триты трайта = 0 ...
(В этот момент он - флаг
Z).