А если так:
- Z80 (понятно, без него никак)
- от цветного режима отказываемся (да, это печальное упущение, но кардинально упрощает - см. ниже, особенно учитывая что цвет "большими квадратиками" не совсем то, за что следует бороться "до последнего инженера" ИМХО, вон на Орионе были же ч/б адптации от Спека типа Jet-Set, Moonfox - и нормально выглядело, особенно в сравнении с примитивными играми, источником которых был оригинальный Специалист)
- добавляем ПЗУ 16кб с SOS спектрума в странице 0 (будем делить адресное пространство 16к-шными страницами), дополненой неким кодом (добавляется несколько Специалисто-специфических подпрограмм обработки NMI), диспетчер 16к в окне 8000..BFFF и full-RAM. Получаем 2 режима:
* стандартный Специалист, в котором имеем доступ сразу и к Спектрумовскому экрану (он "удачно" лежит в 16к-шной странице 1 и ничем не перекрыт) и к Специалистовскому (с 9000 в 16к-шной странице 2), т.е. основной NMI-процедуре (ее разместить в области 8000..8FFF, в режиме "Спек" спрятанной как и родной экран), перекодирующей экраны и клавиатуру, не надо щелкать страницами в процессе конвертации,
* режим 16кб ПЗУ + 64к ОЗУ когда по адресу 0..3FFF включено дополнительное ПЗУ, включен режим FullRAM (доступ к ОЗУ с С000), а подПЗУшечное ОЗУ коммутируем с 0000 на 8000 (чтобы накрыть им экран Спеца, так некстати размещенный автором в середине адресного пространства) - имеем ПЗУ + 48к сплошного ОЗУ в верхних адресах как и надо для Спека
- таки еще нужно ОЗУ не менее 256 байт, выбирающееся IN/OUT по A8..A15 порта FE (по NMI заполнять его аналогом актуального состояния матрицы клавиатуры Спека, чтобы ПО Спека читало из "клавиатуры" без правок Спековского кода)
Всё поместилось в штатные 64кб ОЗУ Спеца. Из доп оборудования - одна ПЗУ неменее 16кб объемом, одна статическая ОЗУ 256х8 или более, одна КП11 для диспетчера ОЗУ 16кб в окне 8000, и какой-то минимум логики для обвязки этих доработок. А вот если планировать какую-то нормальную ОС, а не огрызок живущий в 32кб, то тут уже нужна доп. страница ОЗУ, других путей получить 64к ОЗУ для ОС, сохранив штатный экран, я не вижу.
Кстати, поскольку доп. ПЗУ будет как минимум W27С512 (других сейчас не достать, да и смысла нет искать 27128), то в нем можно сделать переключаемые страницы (выбирать их тем же портом диспетчера что и страницы ОЗУ), и как результат - конфигурацию режима 2 (ПЗУ+64кб ОЗУ) можно использовать для разработки чего-то более интересного чем эмулятор Спектрума48 - всяко пользовательскому процессу тут отдается ОЗУ_48к+ОЗУ_4к+Экран_12к что куда как интереснее чем в оригинальном Специалисте с его ОЗУ_36к+Экран_12к. Да, ПЗУ в этом варианте оказывается на неудобном для CP/M адресе 0000, но на CP/M же свет клином не сошелся. Или можно ввести бит порта диспетчера, отключающий ПЗУ с 0000. Тогда экран 9000 можно закрывать 16к страницей 3 (которая под портами) и поиметь 48к сплошного ОЗУ начиная с 0000 (на Орионе столько хватало для версий CP/M 48к, работавших в странице 0 ниже экрана С000, а тут у нас есть же еще 4кб "ниже экрана 9000", куда можно вынести почти весь BDOS и получить TPA в 44кб)
Ну или уже обсуждавшийся вариант с двумя 64к-шными страницами ОЗУ. В этом случае SOS Спектрума будет в ОЗУ, а не ПЗУ (весь "эмулятор в дополнительной странице"), и на выходе мы имеем почти Орион-128.Делать ли в этом варианте диспетчер по 16кб - тут надо подумать, возможно для ч/б можно и обойтись. Этот вариант хорош тем, что кроме эмуляции Спектрума, во второй 64к странице еще можно и CP/M запускать с полноценного объема TPA.




Делать ли в этом варианте диспетчер по 16кб - тут надо подумать, возможно для ч/б можно и обойтись. Этот вариант хорош тем, что кроме эмуляции Спектрума, во второй 64к странице еще можно и CP/M запускать с полноценного объема TPA.
Ответить с цитированием