Итак, продолжим по сабжу. Делаю черновые наброски схемотехники.
Полагаю, проектировать новый комп в 2019-ом году с тактом 3,5/5 МГц было бы как минимум издевательством. В природе давно существуют КМОП-версии Z80 на 20 МГц, а сейчас скорее всего только они и продаются (из КМОП), логично заложить в схемотехнику их поддержку.
В связи с этим тактовый генератор будет таким:
Идея в следующем. По-умолчанию (при сбросе) включен родной орионовский клок = 2,5 МГц. Программно через порт #FC активируется т.н. режим "турбо", который с помощью джамперов конфигурится исходя из установленного экземпляра процессора.
Этим процессом рулит новое ПО (например, ОС), старое ПО про это не знает, но ему и не нужно, оно работает на родных 2,5 МГц.
При опросе клавиатуры также придётся "падать" на 2,5 МГц, т.к. ВВ55 и МК физически не смогут даже на 10 МГц, а уж на 20 - и подавно. Заодно не придётся адаптировать код (программные задержки) под различные клоки.
Выборка ПЗУ/ОЗУ и организация начального старта (ПЗУ @ 0000h) и верхнего непереключаемого ОЗУ:
До кучи сюда же попала реализация "матюгальника"
К сожалению, у Z80 нет выходного сигнала "INTE", поэтому придётся идти по пути Z80-card (
Едем далее. Обращения к системным портам Ориона и эмуляция натягивания портов на память:
Не нравятся мне эти две КП11 ради того, чтобы IN/OUT копировали LDA/STA... тут надо будет подумать ещё..
Небольшое ноу-хау: совмещение Монитора и ROM-диска в одной микросхеме ПЗУ WB27C512:
Смысл в том, что делать сегодня на РФ2 как-то смешно, нынче проще достать "винбонд", и для базового варианта в принципе будет достаточно 62 Кб под ROM-диск. Упаковав оба два мы получаем экономию места и проводки, а заодно избавляемся от лишней ВВ55, для эмуляции которой достаточно защёлкивать адрес (2хИР23), а данные буду выдаваться на ШД МПС напрямую от ПЗУ.
А в случае применения МП на 20 МГц, для работы в режиме "турбо" винбонд вообще без вариантов!
В общем-то, и всё. Это почти вся материнка! МП, ПЗУ и СОЗУ не нарисованы, но там всё понятно. Позже разрисую узел клавиатуры, порт пользователя и СОМ-порт.
Сигналы активации портов видеочасти можно вывести на свободные линии системного разъёма (их там есть и достаточно много), а также чипселекты порта клавиатуры и пула портов расширения (#F7xx).
С клавиатурой пока вопрос открытый, тут у меня три варианта:
1. Классическая связка ВВ55 + МК;
2. Разъём порта расширения с чипселектом #F4, и т.о. исключить собственно ВВ55 (отдать МК и её эмуляцию);
3. Прямая поддержка клавиатуры PS/2.
С первым вариантом всё понятно, он самый каноничный и пожалуй универсальный, но некрасивый (для 21-го века) и громоздкий.
Второй - более красивый - позволит при желании воткнуть платку с ВВ55 и подключить труъ-клаву, но разработка соотв. ПО для МК под вопросом.
Третий вариант грубо нарушает феньшуй: потребуется "перепил" кода монитора (и поддержка PS/2 скорее всего в 2 Кб не влезет) и кондовое ПО, которое напрямую обращается к клавиатуре, не будет работать. В случае использования конструктора в качестве МПС без видеокарты это всё не проблемы, но для "классики" такой вариант однозначно не подойдёт.
Раз уж у нас Z80, то можно добавить и диспетчер ОЗУ (от Z80-card), но конструкцию это усложнит, а нужен ли он на практике - х/з.
Прерывания. Наверное неплохо заложить. Но в виду вынесения "за скобки" видеочасти возникает небольшое неудобство. В случае использования без видео, прерывания (50 Гц?) нужно генерить интернально, а в случае подключения видеокарты хотелось бы их получать от пятки кадровых импульсов. Нужно мутить схему коммутации, автодетект подключения видео-части с переключением на прерывания от неё...
Можно сразу заложить возможность расширения ОЗУ до 1024 Кб (или даже до 4 Мб?!), но опять же вопрос - нужно ли?
Также витает мысль "положить на бутер вторым слоем" СОЗУ (512 или 1024 Кб), подпёртое батарейкой, т.о. получится быстрый и почти "халявный" RAM-диск, находящийся в адресном пространстве МП (доступ также, как и к доп. страницам ОЗУ, активация например старшим битом порта #F9).
Но для работы с таким RAM-диском придётся переключаться на клок 2,5 МГц, т.к. малопотребялющее СОЗУ на клоке 20 МГц работать не будет. В общем-то, такая же история и с клавиатурой, но с ней это по барабану, в её случае скорость и не требуется.