Цитата Сообщение от NovaStorm Посмотреть сообщение
Советский гений создал Пентагон
Не только пентагон. Есть еще "Орель БК-08", там тоже нет никаких задержек при обращении к ОЗУ.
Цитата Сообщение от ZXMAK Посмотреть сообщение
на словах это конечно проще выглядит, правда насколько помню, кроме ожидания шины, у пентагона еще и порядок выборки attr/pixel меняется на pixel/attr. А вот точно проэмулировать такое поведение непростая задачка, для этого нужно четко разобрать как этот процесс на риале происходит, а детального описания и исследований этого вопроса нет
По схеме "Орели" я могу ответить на любые вопросы (эта схема несколько лет висела у меня на стене в комнате вместо портрета любимой девушки).

В "Орели" порядк выборки attr/pixel или pixel/attr не меняется. Просто в начале каждого такта 3.5МГц анализируется сигнал запроса памяти процессором (сигнал /CSM, который вырабатывается из /MREQ и адресных линий A14, A15). Если он активен - то процессору предоставляется шина памяти на 1 такт. Считанное из памяти за этот такт значение защелкивается на регистре ИР22 и доступно на шине данных Z80 в течение всего последующего времени, пока активен /MREQ. Что же касается записи, то она происходит в указанный такт, когда процессору предоставлен доступ к ОЗУ, а в последующем такте (или тактах) активности /MREQ запись в ОЗУ не производится. Таким образом, в течение 2х тактов Z80 видеоконтроллер сможет обратиться к ОЗУ как минимум 1 раз, и этого как раз достаточно для нормального отображения экрана без задержек процессора.

Думаю, что подобным образом сделано и в Пентагоне. Менять порядок считывания pixel/attr сложно схемотехнически, да и не нужно, если требуется только гарантировать одно обращение видеоконтроллера к ОЗУ за период в 2 такта 3.5МГц.

С точки зрения эмуляции мультиколора - да, тут есть некоторая сложность, т.к. если Z80 не обращается к ОЗУ - то пиксели и атрибуты считываются оттуда каждый такт (т.е. избыточно), а если обращается - то возможны варианты +-такт. Если содержимое той области памяти, к которой обращается видеоконтроллер, изменяется так, что эта разница в +-такт становится существенной - то да, мультиколор начинает вести себя сложным образом.

Но это существенно только при формировании вертикальных мультиколорных полос. Кроме того, поскольку весь код, рисующий мультиколор, как правило, однороден и располагается в ОЗУ - то возможно предсказать и активность процессора в это время, а значит, и точно рассчитать этот код. На практике, думаю, все это делалось эмпирически, т.е. методом проб и ошибок.