Shaos wrote:На борту двоичный ROM (пока 10-битный, но я хочу сделать преобразовалку из 8 битов в 5 тритов и заменить ПЗУ на обычное 2Кбайтное).
Адрес формируется из бинарного представления 6 тритов (т.е. 12 битов - так что ПЗУ будет с неисползуемыми дырами).
При сбросе программный счётчик указывает на адрес нулевой адрес OOOOOO (и там должен быть NOP, т.к. схема иногда его успевает проскочить)...
Сделал преобразовалку из 8 битов в 5 тритов в виде ПЗУ 8->10 (подробнее
тут):
snapshot208.png
Теперь можно и за ассемблер браться
P.S. Тут видно, что в схеме стоит 2К ПЗУ, в котором сохранена только программа из положительных троичных адресов, начиная с нулевого т.е. всего 365 слов - 2K нужно чтобы обращаться к памяти по "binary coded ternary" адресу, например:
OOOOOO -> 00 00 00 00 00 00 (адрес 0)
OOOOOP -> 00 00 00 00 00 01 (адрес 1)
OOOOPN -> 00 00 00 00 01 10 (адрес 6)
OOOOPO -> 00 00 00 00 01 00 (адрес 4)
OOOOPP -> 00 00 00 00 01 01 (адрес 5)
OOOPNN -> 00 00 00 01 10 10 (адрес 26)
и т.д. вплоть до
PPPPPP -> 01 01 01 01 01 01 (адрес 1365) из которых мы берём только 11 бит (без старшего нуля), чтобы адресовать 2К ПЗУ
P.P.S. Если в будущем захочется залезть в отрицательную область троичной памяти, то можно вторую 2К ПЗУ прицепить...
P.P.P.S. На самом деле часть отрицательной области троичной памяти таки попадает в эти 2K (не попадает только треть троичного адресного пространства):
Nxxxxx - не попадает (от -364 до -122)
Oxxxxx - попадает (от -121 до +121)
Pxxxxx - попадает (от +122 до +364)
т.е. у нас в 2K ПЗУ будет не 365 пятитритных слов, как я написал чуть выше, а целых
486 (или 23.7% от всего объёма 2К)!

You do not have the required permissions to view the files attached to this post.