Несколько соображений и идей по разработке плат.
Во-первых - нужна кооперация. А то каждый варится в собственном соку и, в итоге, получаются одни и те же по функциям, несовместимые разработки.
Во-вторых - несколько конкретных идей.
1. Существенное ограничение процессора Z80 - это доступ лишь к 64к памяти. Я немного помозговал и придумал вот что: Если на шину адреса повесить сумматор, который на входе получает 16 бит с щины данных и, скажем 24 бита с некоего 24хбитного регистра базового адреса, а на выходе сумматора - 24хбитная сумма, то можно полностью виртуализовать адресное пространство. То есть все программы могут получить столько памяти сколько им надо, причем не надо будет соблюдать кратность странице. То есть неважно будет с какого адреса программа должна запускаться и в какой она загружена. В идеале можно добавить еще и регистр конечного адреса и контролировать куда обращается программа. В случае, если произошел выход за пределы диапазона адресов - генерится прерывание.
Для совместимости оставить порт расширения 128к, но порт будет выбирать не страницу памяти напрямую, а регистр базового адреса этой страницы.
Вообще я думаю, что для каждого окна адресного пространства процессора в 16К нужен свой регистр базового адреса. Таким образом получаем необходимость иметь 8 регистров базового адреса (8 страниц по 16 к). Плюс к этому хочется иметь возможность аппаратно запретить запись в любое из 4х окон (для эмуляции ПЗУ).
Насколько я понимаю организовать сумматор 16 + 24 и схему управления на ПЛИС несложно.
Разумеется, изначально (после рестарта) сумматор отключен и доступна только память 48к. После включения, биос программирует все порты расширения и переходит к выполнению программ пользователя.
Для того чтобы программы пользователя не конфликтовали с портами расширения - порты должны быть доступны только из первых 16к ОЗУ, которые раз и навсегда отдаются для биоса и ОС.
Для нормального функционирования ОС можно организовать перехват rst0. оно как правило не используется. При появлении на шине выборки команды rst0 происходит отключение сумматора и переход в режим "система". После обработки запроса пользовательской программы - выход обратно.
Преимущества:
- каждой программе можно выделить до 64к в безвозмездное пользование.
- Экономия памяти. (если программа занимает 2к - то 2 к ей и выделиться. Никакого страничного выделения по 16 К).
- Легко реализуется многозадачность. ( Если на NMI вешаем таймер )
- Совместимость с режимом Spectrum.
- удобство в отладке - программа не может ничего порущить за пределами выделенного ей диапазона адресов.
Мысли пока немного сумбурные - но надеюсь идея понятна.
2. Обязятельно поддержать расширенные режимы экрана. Идей много у народа всяких было - но опять таки - несогласованность с другими все портит. Вообще ( на сегодняшний день) надо учитывать, что vga-мониторы гораздо более доступны, чем EGA. Так что вполне можно ввести расширения для них, а не только на телевизор. Скажем экраны 512х384, 64x48 символов в строке. 8битный цвет и т.п.
3. Турбо-режим наверное надо ограничить двумя скоростями 4МГЦ(для совместимости) - Максимум(для работы).
4. Звук. Поставить небольшой и дешевый контроллер типа ATMEGA+ ОЗУ к нему. Причем предусмотреть режим эмуляции AY (все равно их сейчас не найдешь).
Вот такие мысли. Пусть все кто пожелает - критикуют их и высказывают свои идеи. Так хоть обсудим что сделать чтобы не изобретать кучу велосипедов.