Добрый день.
Обзор: Есть процессор Z80 с АП (адресным пространством) 64 КБ, есть стандартное, фирменное расширение памяти до 128 КБ методом отображения 8 страниц по 16 КБ в окно 48-64 КБ АП процессора. Есть не фирменные, но тоже в своём роде стандартные расширения на 256 КБ, 512 КБ и 1024 КБ.
Далее, здесь, на форуме, просматривал темы, в которых уже были идеи подключить 4096 КБ в 16 КБ окно, используя один порт целиком.
Моя идея в следующем: Сделать 2 дополнительных порта и 2 окна в АП: 32-48 и 48-64 КБ, в которые через указанные порты можно подключить любую страницу из тех 256 по 16 КБ (4096 КБ).
Что это даёт и как можно использовать?
1. Программа пишет в неизменяемые 8 КБ (24-32 КБ) некий менеджер памяти, который будет переключать страницы как нужно. В 0 окне (32-48 КБ) может находится страница с кодом программы, а в 1 окне (48-64 КБ) может находится страница с данными. Например, если движок игры помещается в 1 страницу, то данные могут занимать несколько страниц. Для каждого уровня своя страница, для главного меню и настроек своя страница, для заставок тоже свои страницы. Если произошло событие, то его звуковое сопровождение может находится в отдельной странице. Если это большая прикладная программа, то разные исполняемые модули могут находится в разных страницах. Например, код текстового редактора может уместиться в 1 страницу, а данные могут спокойно занять много страниц.
2. Можно в те 8 КБ записать драйвер, управляющий выделением страниц и запуском программ, и программа из одной страницы может вызвать функцию из другой страницы. Тогда в памяти может находится драйвер виртуального диска и загружать данные в нужные страницы для другой программы и конфликтовать они не будут. Плюс - все программы можно писать для работы с одного адреса: 32768. В принципе, можно и оба окна одновременно использовать под код и данные, как обычно.
3. Можно в добавок к менеджеру памяти сделать что-то типа планировщика задач и система получится многозадачной. Даже если одновременная работа будет затруднена, то можно будет хотя бы переключаться между ними.
Конечно, первые 0-16 КБ с торчащим ПЗУ мозолит глаза и уменьшает непрерывную область. Можно будет и там подумать, как работать. Если отключить ПЗУ и перенести экран в 0-16 КБ, то можно будет там разместить менеджер, в 16-32 разместить страницу с кодом программы, а в 32-64 разместить страницу данных. Только тогда страницы будут разного размера, что вызовет сложности в дальнейшем.
Предлагаю обсудить эту идею. Какие достоинства и недостатки вы видите? Вопрос к программистам: Насколько это будет удобно лично вам?