Обсуждаем цифровые устройства...
Ответить

Zx spectrum из современных микросхем

Вт окт 12, 2021 07:31:45

Здравствуйте все , я тут приобрел на днях ПЗУ d27128a20 (прошитое) и z80b из некоего клона спектрума (думаю краснодарская схема т.к. там такое ПЗУ. И я бы хотел собрать клон спектрума,но у меня нет микросхем из Ленинграда и других клонов ,но есть куча других микросхем в том числе и ОЗУ hm62256alp-10 на 16 КБ (у меня их 2,но могу приобрести и 3),но мне остаются непонятны некоторые моменты в его сборке такие как вывод на экран и чтение и оперативной памяти (если оно есть),а также подключение клавиатуры (ps2).Может ли кто-нибудь помочь с этим или дать какую-нибудь литературу по этому поводу?

СпойлерИзображение


Добавлено after 2 hours 28 minutes 54 seconds:
Все с оперативной памятью вроде разобрался ,а с выводом на экран нет ,но по ходу дела буду разбираться,сборку уже начал

Re: Zx spectrum из современных микросхем

Вт окт 12, 2021 11:00:24

Мда.... Изображение в 1,5 Мегапикселя, на котором тем не менее ни пера не видно....
Нужно ну очень не хотеть получить ответ на заданный ТАКИМ макаром вопрос. :cry:

Re: Zx spectrum из современных микросхем

Вт окт 12, 2021 12:07:47

Зачем он вообще выложил фотки корпусов? Полезнее будет схема и правильно сформулированый вопрос.

Re: Zx spectrum из современных микросхем

Ср окт 13, 2021 17:16:56

Товарищ приобрёл нечто,
Михаил_avr писал(а):из некоего клона спектрума (думаю краснодарская схема т.к. там такое ПЗУ

, пзу по названию определяет принадлежность к варианту компа.
Что должно получиться в итоге?

Re: Zx spectrum из современных микросхем

Чт окт 14, 2021 00:16:23

Расширю немного вопрос, так как сейчас пишу эмулятор спектрума на контроллере.

Может кто нибудь в общих словах, но точно объяснить как работает спектрум. Как работает процессор и память и так ясно, но вдруг тут есть знатоки портов ВВ и видеоадаптора?

Объясню в чём проблема. Программы в моём эмуляторе запускаются, но некоторые просто очень быстро идут, прямо невозможно пользоваться. Или работают нормально, но бегущая строка прямо мелькает. Вот я и хочу понять взаимодействие компонентов, чтобы понять на какое железо или программные вещи ориентируются эти программы для синхронизации.

Самое странное, что не все программы "летают". И загрузка с кассет работает, так как частоту процессора я стараюсь держать в 3.5 мгц и считаю такты для синхронизации. Понимаю, что есть завязка на прерывание, но что происходит конкретно - темный лес. Не хотелось бы потактово крутить процессор и смотреть, что происходит. Было бы реальное железо - потыкался бы осциллографом, но его нет. Есть подозрение, что видеоадаптор тормозит работу с памятью или как-то обнаруживает своё присутствие процессору, а значит программе, формируя временные метки, но как он это делает нигде не пишут. Вроде через вход прерывания, т.к. ПДП в спектруме нет, но ведь видеопамять читается постоянно, когда тогда процессору работать? К тому же очень странно, что в эмуляции работает считывание кассет, при этом я посылаю только 50 прерываний в секунду для чтения порта клавиатуры. Видеоадаптор в моей реализации вообще невидим процу. Как его более достоверно заэмулировать?

На форумах вся информация размазана, что приходится собирать по крупицам. Ещё бы кто объяснил в чём отличие 128 и 64 к версии, кроме очевидных вещей ПЗУ и памяти. Подозреваю, что кто-то физически переделывал, может что конкретное скажет.

Re: Zx spectrum из современных микросхем

Чт окт 14, 2021 15:22:41

хай
Батенька вам сюда
https://zx-pk.ru/content/

Re: Zx spectrum из современных микросхем

Чт окт 14, 2021 16:03:23

Да читал я уже. Понимаю, что наверное 100 раз подобное обсуждалось, но я надеялся на радиокоте кто-то будет в теме, чтобы задать текущие вопросы знатоку и не искать в гугле. Там по низкочастотным запросам всякую фигню выдают. А регистрироваться на разных сайтах не хочу. Нет так нет. В общих чертах-то мне всё понятно, но есть нюансы, видимо.Некоторые программы работают не так как надо, ни на 48, ни на 128. Но не все, конечно. Но тут есть ещё вероятность ошибки чтения с аудиовхода. Сейчас пишу загрузчик образов двоичных файлов, а там посмотрю, может наткнусь на правильную мысль.

Re: Zx spectrum из современных микросхем

Чт окт 14, 2021 19:59:48

У спектрума вроде имела место совмещенная видеопамять на динамических ОЗУ.
Доступ что от МП, что от аппаратного контроллера дисплея - как-то там распределялось время доступа с циклами регенерации.
Современные варианты частенько на статических ОЗУ - одним кристаллом можно весь объём памяти перекрыть.
Но вот фокусы с "двусторонним доступом" в этом случае уже иначе строить придется.
:dont_know:

Re: Zx spectrum из современных микросхем

Чт окт 14, 2021 20:30:57

Как я понял такое двухстороннее общение с памятью и регенерация "ворует" 20-30% скорости работы процессора. Но некоторые программы используют какой то другой тормоз, насколько я могу судить. Например игрушка "LODE RUNNER" и одна из версий тетриса запускаются у меня настолько быстро, что 20-30% не спасут. Или реально раньше были такие хардкорные игры? Уже отдельно замедлял обращение к видеопамяти, но всё тщетно. Ощущение, что я что-то не учитываю. Вот бы понять потактово как и когда замедляется цикл процессора при обращении со стороны видеоконтроллера. Реального железа не хватает, а по схеме разбираться долго.

Re: Zx spectrum из современных микросхем

Чт окт 14, 2021 20:39:29

Там суть в подгонке временных интервалов под требования видеоконтроллера.
Компромис между тактовой МП и тем, что требуется для формирования растровой картинки (кадровые и строчные синхроимпульсы).
Вроде так... Я спектрумы не строил - так ... почитывал...
:roll:
Может тут чего накопать удастся:
http://www.nedopc.org
8)

Re: Zx spectrum из современных микросхем

Чт окт 14, 2021 21:17:25

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

Re: Zx spectrum из современных микросхем

Пт окт 15, 2021 05:11:17

может гдето регистр синхронизации есть в оригинале и отсутствует в эмуляторе?, точнее он есть, но находится всегда в разрешающем состоянии? вот, те программы/игры, кто считает такты - идут нормально, а те, кто на него ориентируется - бегут...
подозреваю, что этот регистрисвязан с кадровой разверткой... удобно - отрисовал картинку и жди, пока телевизор её не показал... показал - можно рисовать следующую.
а может... и даже более вероятно - отслеживается из какой области памяти происходит чтение видеочипом и игра ждёт освобождения нужной области и так замедляется до нужной скорости.
а нет видеоадаптера - нет ни синхроимпульса ни занятой оббасти памяти...

Re: Zx spectrum из современных микросхем

Пт окт 15, 2021 06:14:56

nHz, если я правильно помню, там аппаратное прерывание z80 формировалось вместе с кадровой синхронизацией, непомню точно ровно по кадрам (50Hz) или в 2 или 4 раза чаще, там же еще область делилась на 3+1 полосы - может по ним. или наоборот 25Hz.
это прерывание - основной медленный таймер там.

сам же процесс вывода на экран полностью прозрачен для процессора, только обмен по шине подтормаживается через wait или както иначе если обмен выпал на время чтения в видеорегистр. механизм регенерации памяти z80 не используется, память регенерируется видеосчетчиками.

Re: Zx spectrum из современных микросхем

Пт окт 15, 2021 10:24:05

прерывание 50 гц я посылаю, тут всё чётко, правда независимо от видеовывода, т.к. видеовывод на монитор 60гц. Сначала думал посылать 60гц, но это бы всё равно испортило работу программ, пытающихся потактово синхронизироваться с изображением. Они то думают, что развёртка 50 гц. А если увеличить эквивалентную частоту процессора в 60/50=1.2 раза до 4.2Мгц, то поплывут другие тайминги. В том числе испортится загрузка программ, скорее всего. Можно было бы ввести промежуточный видеобуфер, который прорисовывается как 50гц экран, но памяти жалко, её и так еле хватило на 128 кб спектрум. Что весьма странно для ESP32 c 520кб памяти из которых примерно 300 доступно. В общем, надо лезть глубоко в настройки SDK и разбираться что там китайцы понаворотили. Сейчас это на втором плане.

Но наметилось решение "быстрых" программ. Залез вчера в код реализации процессора. Я его не сам писал. Лень было все команды ручками прописывать. Да и хорошей литературы не нашёл, чтобы всё чётко понимать. Так вот там все команды выдают количество необходимых для выполнения тактов. Он влияет на формируемые задержки, чтобы держать эквивалентную частоту ЦПУ в 3.5Мгц. Я сначала сверил по таблице команд - вроде всё верно и успокоился. Но раз такое дело с ускорением, то пристальнее посмотрел и обнаружил пару команд с несоответствием. То есть команда должна выполняться 12 тактов,например, а код процессора запрашивает 4. Моя программа честно формирует задержку эквивалентную 4 тактам. Но если программист использовал такую команду для синхронизации программы, она соответственно будет выполняться значительно быстрее. Видимо придётся все команды перелопачивать, а то и написать программу для тестирования эмуляции z80. То есть вводить его в определённое состояние, и запускать код команды, смотреть на результат и запрошенные такты. Если честно не хочется таким заниматься пока. Планировал шлифовать программу когда уже все функции эмулятора заработают более-менее.

Попробую на текущем этапе бегло пробежаться по коду, чтобы поправить ручками, что обнаружу. Потом запущу "быстрые" программы и проверю.

Если не поможет, прикручу другую реализацию Z80.

Re: Zx spectrum из современных микросхем

Пт окт 15, 2021 11:21:40

а я не уверен что в оригинале не 25Hz, думаю нужно попробовать этот вариант.

и еще посмотреть что там в векторе прерывания в прошивках оригинальных, он там счетчик в памяти апдэйтит помоему, мож какаято ошибка в симуляции этого?

Re: Zx spectrum из современных микросхем

Пт окт 15, 2021 12:40:11

Было б железо, тыкнулся бы в ногу прерывания осциллографом и всё стало ясно. В своей программе я могу и 25гц поставить, не проблема, только не поменяется ничего, скорее всего, но попробую.

Сейчас допишу недостаюшие такты и попробую. Такое чувство, что человек писавший эмулятор сам запутался. Вначале он прибавляет 4 такта для любой команды, типа самый минимум. Потом во многих местах считает, что добавил 8. На POP и PUSH вообще тактов не набрасывает, оставляя дефолтные 4. А ведь это достаточно частые команды. Короче, где увидел я добавил, но уже понимаю, что где-то не увидел. Нужны тесты, вобщем.

UPD/ В общем, разобрался. Моя программная реализация Z80 не обрабатывала инструкцию HALT, т.е. процессор не останавливался, а шагал дальше, как после NOP. Соответственно у многих программ совершенно пропадала возможность работать синхронно с постоянной скоростью, подпинываясь синхронными прерываниями 50гц и останавливаясь на HALT.

UPD2/Найти бы ещё документацию как работает звуковой чип AY именно на ZX spectrum, т.е. описание портов. Уже час ищу в гугле, а мне подсовывает схему на AVR для проигрывания мелодий и ещё всякую дичь. А ведь я находил не так давно. Всё время они что-то меняют, видимо надо как параноику всё локально сохранять. Для низкочастотных запросов постоянно выдаёт какую то ерунду.

Re: Zx spectrum из современных микросхем

Пт окт 15, 2021 19:37:18

ay-3-8910 datasheet

http://map.grauw.nl/resources/sound/gen ... 3-8910.pdf
https://ru.wikipedia.org/wiki/AY-3-8910 русская вики чутка подробнее свиду
Последний раз редактировалось AlexS4 Пт окт 15, 2021 19:41:45, всего редактировалось 1 раз.

Re: Zx spectrum из современных микросхем

Пт окт 15, 2021 19:40:51

А на KC89C72 случайно никаких данных нету?
:roll:

Re: Zx spectrum из современных микросхем

Пт окт 15, 2021 19:47:42

KC89C72 вроде идентична AY-3-8910 но тонкости я не знаю, когда их начали добавлять в замен io-bit звуку я уже увлекся pc )).

Re: Zx spectrum из современных микросхем

Пт окт 15, 2021 19:49:41

То известно... Я надеялся, что у кого-нибудь оригинальный даташитик закопался...
:(
Ответить