Поскольку
я тут несколько дней занимался программированием на ассемблере под процессором 6502,
я у себя на диске различную справочную информацию по
6502 и всему с ним связанному просматривал...
И нашел я одну статеечку весьма интересную, которую раскопал где-то очень давно, но толком не было возможности
её толком прочитать и разобраться.
Но в этот раз я её не только прочитал, но и сделал перевод.
Суть в следующем: микропроцессор
6502 не имеет отдельных инструкций для работы с устройствами
ввода-вывода. Он работает с ними как с ячейками памяти. И из-за этого порой трудно получить крупные линейные
адресные пространства, даже если переключать банки памяти.
Да и любимый наш
К580ВМ80 без серьёзной аппаратной поддержки команды
IN и
OUT выполняет тоже в пространство
памяти.
Процессоры
1801ВМ1,2 также отдельного пространства УВВ не имеют...
Так вот идея, которую рассматривают в статье, заключается в том, чтобы неиспользуемые команды процессора
отслеживать аппаратно и использовать как специфическое устройство вывода, которое не находится в адресном
пространстве процессора.
Для микропроцессора
65C02 такие команды исполняются как быстрый
NOP, и на программу и состояние памяти
они не влияют.
Но если отследить эти команды по характерным для группы команд битам, можно защелкнуть код операции и
использовать такое устройство как порт вывода.
Схема весьма проста:
И на мой взгляд такое решение просто идеально для коммутации банков памяти, потому как в карте памяти
это устройство не занимает ни одной ячейки!
Автор пишет, что и очень быстрый
SPI можно так реализовать, и еще ряд решений...
Все подробности - в статье ниже: