Внимательный читатель может спросить - почему в таблице компонентов у меня стоит 24c32 (последовательное ПЗУ на 4 КБ), а в схеме - 24c512 (последовательное ПЗУ на 64 КБ). Ответ простой - для минимальной работы достаточно 24c32, а в будущем возможна поддержка микросхем памяти вплоть до 24c512. Разве что в отличие от 24c32 и 24c64, где WP защищает от записи только старший квадрант (соответственно старшие 1 КБ и 2 КБ), а во всём, что старше (24c128, 24c256, 24c512), нога WP запрещает запись во всю память, т.е. для полноценной эмуляции троичных ПЗУ/OЗУ в одном флаконе может и не подойти. С другой стороны для этих больших микросхем вместо аппаратной можно сделать программную защиту от записи в область, эмулирующую троичное ПЗУ - т.е. любые попытки записи туда через троичные тумблеры просто не будут разрешаться эмулятором.
Чтобы определиться сколько же нам надо килобайтов, сначала вспомним описание оригинальной архитектуры
3niti alpha, где про память написано следующее:
Как видно доступная память разделяется на три куска по 2187 триад (каждая триада будет у нас описываться одним байтом). В случае же полноценного использование всех 9 тритов для адресации троичной памяти полный диапазон адресов будет -9841...+9841, причём под ПЗУ будyт также отданы лишь средние 2187 триад, размер же ОЗУ (расположенного выше +1094 включительно) составит 8748 триад. Область периферийных устройств может также потребовать наличия памяти для эмуляции - это ещё 8748 триад. Т.е. для полноценной работы с 9-тритовыми адресами нам надо как минимум 19683 байт в нашем ПЗУ с последовательным доступом из которых желательно защитить от записи до 2187 байт.
В случае 24c32 (4 КБ) мы можем аппаратно защитить от записи старшие 1024 байта, что несколько меньше чем нужно, однако вполе достаточно на первое время - скажем они могут покрыть область троичного ПЗУ с адресами от 0 до +1023 (что означает, что старшие 71 триада и отрицательная часть троичного ПЗУ эмулироваться через двоичное ПЗУ не будут). Оставшиеся 3072 байта (что есть 3 КБ) могут быть поделены между 2187 триадами троичного ОЗУ и оставшимися 885 байтами, которые можно отнести в область периферии (адреса ниже -1094 включительно), из которых скажем 729 (для круглого троичного счёта) можно назначить буфером обмена для "умных" внешних устройств, а оставшиеся 156 зарезервировать под остальную виртуальную периферию.
В случае 24c64 (8 КБ) мы можем аппаратно защитить от записи старшие 2048 байт, что только немного меньше чем нужно (а нужно напомню 2187 триад). Оставшиеся 6 КБ полностью покроют область троичного ОЗУ и область виртуальной периферии первого прототипа, причём ещё и останется (1770 байт). Для эмуляции же полной 9-тритовой троичной памяти этого чипа будет недостаточно.
Для последовательных ПЗУ большего размера защиту от записи придётся делать программно. Чип 24c128 (16 КБ) не сможет покрыть всё доступное 9-тритное адресное пространство, однако он вполне сможет покрыть облать полного троичного ОЗУ - 8748 триад. Скажем если мы отнесём под троичное ПЗУ указанные ранее 2187 триад, то у нас останется 5449 триад, которые можно использовать под эмуляцию виртуальной периферии. Покрыть все 19683 триад при полной 9-тритной адресации сможет чип 24c256 (32 КБ), оставшуюся область которого можно использовать скажем для эмуляции троичного дискового накопителя объёмом 13085 триад. А чип 24c512 (64 КБ) будет иметь эмулируемый диск размером уже 45853 триады.
Кстати все эти последовательные ПЗУ допускают до миллиона циклов записи, т.е. их использование для эмуляции троичного ОЗУ в каком-то смысле оправдано. Хотя всегда можно отвести несколько регистров пика под часть эмулируемого троичного ОЗУ - только для наиболее часто меняющихся переменных троичных программ. Точно также несколько ячеек адресуемых в области троичного ПЗУ можно не хранить во внешнем ПЗУ, а подставлять в эмуляторе для индентификации конкретной реализации "3niti alpha", версии аппаратной части и версии программной части.