📂 Документ: orion128-mod-10_clean.html


 

Орион-128 проблемы сплющенного экрана

Расплющиваем экран

Проблема плющеного экрана Ориона-128

У ОРИОНА картинка занимает лишь 2/3 экрана, справа и слева от растра остаётся пустое место. Иными словами экран у ОРИОНА плющенный с боков и пиксель не квадратный. При рисовании кругов надо вводить поправку на уплющенность.

Чтобы исправить уплющенность достаточно понизить пиксель клок с 10 до 8 МГЦ, как это сделано в Специалисте. Для этого ставят кварц 8.0 МГЦ. При этом такт процессора падает до 2.0 МГЦ, точно как в Специалисте. Понятно, что такая скорость работы никого не может устроить. Потому менять кварц имеет смысл лишь при одновременном турбировании. Что, естественно, возможно лишь при Z80 или при применении винтажного 8080А на 4 МГЦ.

Замечу, что кварц 8 МГЦ хорош ещё и тем, что при этом надёжно работает схема Турбо-200%, при которой RAS-CAS ОЗУ тоже удваивается. И если на такте 5 МГЦ ОЗУ быстро перегревается и начинает сбоить, то при 4 МГЦ перегрева нет даже без вентилятора.

При кварце в 10 МГЦ почти всегда используют схему Турбо с WAIT, т.к чтобы добиться надёжности при Турбо-200% требуется много настройки (для точной подгонки фронтов) и всё равно избавиться от температурной зависимости не удаётся. Т.е, если настроить Турбо-ОРИОН зимой, когда температура в квартире 12-16' C, то при наступлении лета при температуре 30-35' C начинаются сбои.

И как раз замена кварца на 8 МГЦ, т.е клока Z80 и RAS-CAS до 4 МГЦ позволяет добиться надёжности. Хотя я, увы, слишком поздно (в 1997) узнал секрет как и при RAS-CAS в 5 МГЦ избавиться от перегрева. Для этого я использовал довольно громоздкую схему для устранения перегрева ОЗУ. Пришлось её изобрести, т.к тактировать Z80 (четверным) тактом 10 МГЦ при ОЗУ работающем на старом такте 2.5 МГЦ малоэффективно. Ускорение относительно клока в 5 МГЦ получается небольшим. При двойном соотношении частоты ОЗУ и CPU ускорение составляет 1.42 раза, а при четверном соотношении частот ускорение достигает лишь ~1.75 раза, что даёт эффективный такт ~4.3 МГЦ. А такая скорость и без "колдовства и плясок с бубном" из-за Z80 на 10 МГЦ достигается при клоке Z80 в 4.5 МГЦ на самом тормозном UB880 по схеме Турбо-200%.

Потому повышенный вчетверо такт процессора разумен только при ОЗУ на двойном такте, т.е при RAS-CAS ОЗУ в 4.5...5 МГЦ. С процессором Z80H 10 МГЦ получаются очень надёжными, а вот с Z80B разумнее понизить клок до 9 МГЦ. Знаю, что у многих людей Z80B работал на 10 МГЦ, но у меня Z80B на 10 МГЦ при нагреве сбоил, потому я понижал его клок до 9 МГЦ, что попутно и расширяло экран. Требуется применять кварцы 20 и 18 МГЦ и триггер, чтобы CLK Z80 был правильным меандром со скважностью 2.

При применении скоростных РУ7И или РУ5-тых с наклеенными радиаторами и мощного вентилятора легко избавиться от перегрева ОЗУ на двойном такте. Но, если нет медных радиаторов и вентилятора от 486-го процессора, то, как указано выше, можно применить громоздкую схему (6 корпусов) для снижения разогрева.

Сюжет её в том, чтобы запрещать /CAS во время строчного и кадрового бордюра, когда данные из видео-ОЗУ не нужны. А также запрещать /CAS при излишних дублирующих доступах видеочасти в циклах между записями в ИР82. Применение этой схемы снижает разогрев ОЗУ на треть.

Для чего надо было раньше иметь именно 5 МГЦ или выше? Оказывается, чтобы иметь HD-формат дискеты нужна скорость процессора не менее 5 МГЦ. Такая скорость нужна также для нормальной работы эмулятора ZX на прерываниях. Сейчас таких задач нет, потому можно довольствоваться реальным тактом всего в 4 или 4.5 МГЦ, что избавляет от громоздкой схемы для снижения нагрева ОЗУ и вентилятора.

Таким образом, если заменить кварц на 8 МГЦ, то и расширяется экран и решается проблема перегрева ОЗУ при турбировании на 200%. Тогда можно обойтись уже без вентилятора одними медными радиаторами наклеенными эпоксидкой на динамические ОЗУ. Это хорошо, т.к шум вентилятора раздражает.

Сейчас в моём рабочем ОРИОНЕ стоит кварц не 8, а 9 МГЦ, что, хотя и растягивает растр не на весь экран, но зато даёт реальный такт чуть побольше. Это лучше, т.к у меня сейчас не Турбо-200%, а Турбо с WAIT, что даёт при кварце 9 МГЦ лишь 2.25*1.42= ~3.2 МГЦ.

Чтобы заменить кварц на 9 МГЦ надо на D8.1/1 вместо 47 цепи подать 46-тую цепь. Если кварца 9 МГЦ нет, то можно применить кварц 18 МГЦ поделив надвое на триггере. При этом нарушается центровка растра по горизонтали (это не страшно, т.к при 9 МГЦ слева и справа от картинки ещё остаётся место и к тому же подстроечником частоты строк картинка прекрасно двигается вправо/влево). А если у Вас нет на дисплее нужного регулятора, но Вы всё равно хотите растр точно в центре, то вот схема получения ССИ при кварце 9 МГЦ.

Доработки Орион 128

Можно ли в ОРИОНЕ иметь нормальный экран при 2.5 МГЦ

Недавно возник вопрос, как сохранить оригинальную скорость (2.5 МГЦ), если экран отплющен. Иметь оригинальную скорость надо для прогона игр и бездарных системных программ, что сдуру основаны на задержках п/п-ммы F81B. Которая, кстати, в ПЗУ М3 в разы быстрее, чем в ПЗУ М2.

А чем быстрее работает F81B, тем больший процент времени отдаётся собственно игре, т.е с ПЗУ М3 игра будет вполне быстрой, а с М2 - тормозятиной. Потому грамотная игра должна сама опрашивать клавиатуру. Именно так и сделаны грамотные игры ОРИОНА, они не зависят от кода ПЗУ. А в идеале игра должна даже самонастраиваться на быстродействие конкретного процессора.

Задачи подгона скорости под 2.5 МГЦ у меня не было (т.к и самого переключателя Турбо/Нетурбо нет). Но, думаю, что введя переключатель и тормозя процессор WAIT-ом до нуля (во время бордюра) можно подогнать скорость в режиме Нетурбо точно до 2.5 МГЦ при любом кварце.

Первая пришедшая в голову мысль такая. Меняем кварц на 8.192 МГЦ, соответственно изменив коэфф-т деления счётчика по строкам с 80 до 64. Процессор Z80 при схеме Турбо с WAIT при кварце 10 МГЦ даёт реальный такт в 2.5*1.42= 3.55 МГЦ. А при кварце 8.192 МГЦ при Турбо с WAIT получается реальный такт в 2.048*1.42= 2.908 МГЦ.

Чтобы получить точно стандартную скорость можно подать сигнал по длительности равный половине сигнала строчного гашения (получается на ЛА3 из сигналов 46 и 45) на вход WAIT Z80. Это тормознёт ровно на 12.5% (процессор работает 48+8 МКСЕК и 8 МКСЕК стоит в каждые 64 МКСЕК). Тогда эффективный такт в режиме НЕТУРБО будет 2.908*0.875= 2.54 МГЦ, что и требовалось. При кварце равном точно 8.00 МГЦ получится скорость чуть ниже номинала - 2.47 МГЦ.

И всё было бы чудесно, если бы не... Интересно найдётся кто-нибудь, кто сообразит почему такой вариант не очень хорош. У меня есть и другие варианты, но посмотрим насколько компетентны читатели.

Заметим, что надолго тормозить процессор WAIT-ом можно только во время бордюра, т.к иначе, если вводить более одного такта WAIT подряд при выводе картинки, то на экране будет Бог знает что. Потому при двух тактах WAIT подряд (что я делал при большом Турбо, чтобы надёжность КНГМД не падала) на экране ОРИОНА бегали блёстки (и их приходилось гасить специальной схемой "снегогашения"). А если Z80 КМОП, то можно тормозить не WAIT-ом, а просто не подавая клок на время торможения (КМОП допускают такое, даже обычный Z80 работает на клоке до 2 КГЦ, а вот КР580 нет, ему надо минимум 200 КГЦ).

Заметим, что надолго тормозить процессор WAIT-ом можно только во время бордюра

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

(HWMAN делал пропуск каждого пятого такта на КР580ВМ80А, работало.)

Если надолго тормозить процессор (как делает ИРИША в режимах 2 и 3 останавливая процессор на 80 тактов частоты 2 МГЦ), то естественно никакая работа с магнитофоном невозможна. Понятно, что если останавливать CPU на период гашения по кадрам (а это 8192 периода частоты 2 МГЦ), то никакой МГ-ввод тем более невозможен.

Но вспомним, что в коммерческих защитах РК86 удавалось, сократив пачку ПДП до 4 байт (что вызывает останов CPU на 4*4=16 маш.тактов), выполнять ввод с МГ без гашения экрана (в обычном режиме в пачке 8 байт, т.е останов на 8*4=32 маш.такта).

Из этого ясно, что МГ-ввод возможен при останове WAIT-ом на время не дольше, чем 16 маш.тактов. Если останавливать CPU только во время гашения по строкам всего на 8 МКСЕК, что как раз и соответствует 16-ти машинным тактам, то по аналогии с РК86, есть надежда, что МГ-ввод не нарушится. Останов на 8 из 64 периодов сдвига видеобайта тормозит на 12.5%. Настолько можно затормозить без потери записи на МГ.

Но можно сделать и лучше. Т.к из 16 периодов сдвига (32 машинных тактов), что занимает время гашения по строкам надо тормозить половину, то можно тормозить каждый нечётный период. Это будет тормозить не очень точно, но всё-же примерно также, зато МГ-ввод при этом вообще не пострадает.

Кроме того, можно тормозить CPU иначе. Не останавливая CPU полностью, а лишь понижая его быстродействие. В схемах Турбо есть возможность переключения на Нетурбо. Можно переключать такт CPU на время гашения (в т.числе и на долгое время гашения по кадрам) на обычный такт, т.е вдвое низкий такт в 2 МГЦ. Т.е пока идёт вывод картинки процессор скворчит со средней скоростью в 2.82 МГЦ, а на время строчного и кадрового бланка такт CPU переключается точно на 2 МГЦ.

Таким образом из 312*128 машинных тактов полного кадра 256*32 + 64*128 машинных тактов будут прогоняться на скорости 2 МГЦ, что существенно тормознёт (при 256 линиях, когда выводится картинка, медленны 32 машинного такта и при 64 линиях кадрового гашения все 128 тактов строчного периода медленны). Таким образом 41% времени процессор прогоняет со скоростью 2 МГЦ и 59% на скорости 2.82 МГЦ. Средняя скорость получается: 2.0*0.41 + 2.82*0.59 = 2.483 МГЦ, что и требовалось. Ясно, что при искусственном подтормаживании процессора подгоняется только средняя скорость прогона.

Но конечно, я не имел ввиду проблему с МГ-вводом, её прекрасно можно делать в бестормозном режиме Турбо, так что это не проблема. Коммерческих МГ-защит, жёстко привязанных к скорости CPU для ОРИОНА нет (хотя были когда-то). Торможение до скорости оригинала нужно не для того, чтобы сохранить МГ-константу ввода, а для того, чтобы можно было играть в игру на скорости близкой к скорости оригинала.

Ладно, подскажу ещё одну проблему возникающую при искусственном подтормаживании процессора. - Звук. Звуки станут ещё более противными, чем у РК86, т.е длительности периодов выдаваемых на динамик меандров будут плавать на +/- 15%. Чистые тона можно получить только в бестормозном Турбо режиме.

Но я имел ввиду другую третью проблему.

В предыдущих постах, чтобы выровнять быстродействие до номинальных 2.5 МГЦ эффективного такта при клоке Z80 в 4...5 МГЦ, предлагалось останавливать процессор во время бордюра (неважно как, отрубая клок Z80 или WAIT-ом).

При остановке WAIT-ом процессор останавливается при активном /RD, /WR и открытых буферах и видеочасть полностью лишается доступа к ОЗУ. Экран гаснет. Это не проблема, т.к экран и-так погашен сигналом гашение по кадрам или строкам. Но т.к обращения к ОЗУ видеочасти служат не только для вывода на экран, но и для регенерации динамической памяти, то полная пропажа обращений к некоторым столбцам РУ5-тых приведёт к потере данных в памяти.

Чтобы данные в ОЗУ не погибли нужно коммутировать адреса ОЗУ на счётчик и подавать хотя-бы /RAS. Но этого не происходит при полном останове процессора. Потому первый вариант тормозилки с полным остановом по WAIT не проходит.

А вот второй вариант, где для торможения Z80, не стопорится, а кратковременно переключается на клок 2 МГЦ не нарушает регенерацию. Причём это можно делать не только во время бордюра.

Т.к в Z80 сигнал на вход WAIT можно подавать несинхронно клоку, то при Z80 на такте 4/8 МГЦ самым простым способом подгона скорости к номинальным 2.5 МГЦ будет переключение клока Z80 тактом очень низкой частоты (5...50 ГЦ) с регулируемой скважностью. При этом, допустим, при 0 процессор работает при такте 2 МГЦ, а при 1 на такте 4 МГЦ. Не проблема подобрать скважность так, чтобы быстродействие было любым желаемым в интервале от 2 до 4 МГЦ.

 

Автор под псевдонимом, источник  https://ruecm.forum2x2.ru/

 

Доработки и схемы прочие... непроверенные

 

 

 

 

Полезные и интересные статьи

На предыдущую страницу  На главную страницу  На следующую страницу