Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Unsorted (http://zx-pk.ru/forumdisplay.php?f=13)
-   -   ZX Spectrum: аппаратная реализация на восьми микросхемах (http://zx-pk.ru/showthread.php?t=13747)

Hm 1st April 2011 00:15

Quote:

дёргать за него, когда центральный обращается к памяти
Так это (циклы ожидания) уже будет бОльшое отступление от "правильной" эмуляции (картинки на бордюре и т.д.).

balu_dark 1st April 2011 02:24

Quote:

Originally Posted by Lisitsin (Post 371599)
А проблеммка с видео оказалась по-сложнее, чем я думал. Картинку засинхронизировать удалось, но грязи ужасно много. прийдётся вводить в схему дополнительный провод от центрального процессора к видеопроцессору и дёргать за него, когда центральный обращается к памяти.
Вот как сейчас выглядит картинка:
http://www.youtube.com/watch?v=m1Wujk6t4QY

В любом случае - сейчас намного приятнее чем было. то что было ранее - ну жутко нервировало.

Lisitsin 1st April 2011 19:40

Quote:

Originally Posted by Higgins (Post 371649)
Есть какие-нибудь результаты?

Пока нет. Сейчас перелопачиваю весь скрипт. Корректирую обращение к памяти. Обращение к памяти буду сигнализировать по отдельному проводу, который будет отслеживаться видеопроцессором. Неделька понадобится.

Higgins 1st April 2011 22:45

Quote:

Originally Posted by Lisitsin (Post 371888)
Сейчас перелопачиваю весь скрипт. Корректирую обращение к памяти. Обращение к памяти буду сигнализировать по отдельному проводу, который будет отслеживаться видеопроцессором. Неделька понадобится.

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

balu_dark 2nd April 2011 13:46

помоему в железе это рулилось так - при 1чке тактового сигнала - память юзал процессор а при нолике тактового - видеоконтроллер. если не ошибаюсь именно это и называлось "прозрачный доступ к памяти". Но было сделано не на всех клонах. Единственно не могу вспомнить к какому из тактовых это привязывалось - 14, 7 или 3.5 мегагерц. Скорее всего к какому либо из первых двух.

Lisitsin 2nd April 2011 14:27

Quote:

Originally Posted by Higgins (Post 371925)
Провод нужен для разруливания обращений к памяти процессора и видеопроцессора или для чего-то другого? Если первое, то эмулятор должен делать это не как-нибудь, а вполне определенным образом.

Провод ввожу для разрешения конфликта обращения к памяти обоих процессоров. Единица будет означать занятость памяти центральным процессором. Видеопроцессор будет отслеживать эту линию и читать память только при нуле на этой линии.

Higgins 2nd April 2011 18:04

Quote:

Originally Posted by Lisitsin (Post 372068)
Провод ввожу для разрешения конфликта обращения к памяти обоих процессоров. Единица будет означать занятость памяти центральным процессором. Видеопроцессор будет отслеживать эту линию и читать память только при нуле на этой линии.

Как это реализовано в настоящем Спектруме можно почитать здесь:

http://www.worldofspectrum.org/faq/r...kreference.htm

начиная со слов

Quote:

If you run a program in the lower 16K of RAM, or read or write in that memory, the processor is halted sometimes, as the ULA needs to access the video memory to keep the TV updated; the electron beam can't be interrupted, so the ULA is given a higher priority to access the contended memory.
Это даст общее представление. Возможно, имеет смысл не реализовывать различные схемы "прозрачного" доступа и затем эмулировать логику ULA в части видеовывода, а реализовать разделение доступа между видеопроцессором и основным процессором сразу так, как это сделано в ULA.

Hm 2nd April 2011 22:29

Quote:

сразу так, как это сделано в ULA
Это будет неверное решение. Не надо забывать о том, что "там" использовалась динамическая оперативная память и операция обращения к памями разруливалась автоматом, который формировал, в том числе, такие сигналы как RAS и CAS. В данном случае, надеюсь, память другого типа и все "проще". Да и вообще, о каких там приоритетах может идти речь - я, помнится делал автомат, где коллизий не м.б. в принципе и тайминги 565ру5 это позволяли.

Higgins 2nd April 2011 23:33

Quote:

Originally Posted by Hm (Post 372207)
Это будет неверное решение. Не надо забывать о том, что "там" использовалась динамическая оперативная память и операция обращения к памями разруливалась автоматом, который формировал, в том числе, такие сигналы как RAS и CAS. В данном случае, надеюсь, память другого типа и все "проще".

Штука в том, что в Спектруме видеовывод, остановки центрального процессора и прерывания жестко связаны между собой. Качественная эмуляция Спектрума подразумевает и эмуляцию этих связей. Поэтому, какого бы типа память ни использовалась, видеовывод приходится реализовывать согласно тому, как работает оригинальный Спектрум с его динамической памятью и всеми остальными особенностями. Я дал ссылку. Почитайте.

Lisitsin 2nd April 2011 23:41

Ну, некоторые продвиги есть. Правда изредка слетает:
http://www.youtube.com/watch?v=DI4us7O4KiY

osa 2nd April 2011 23:48

красиво выглядит! Спрайт пропадает-двоится это глюк записи или так и есть?

Hm 3rd April 2011 00:08

Quote:

какого бы типа память ни использовалась
Нда ... действительно. Похоже "имитировать тормоза" так-же придется :)

Vadim 3rd April 2011 01:28

Вы уж извините, наблюдаю за вашей эпопеей с момента её создания. Прихожу к выводу, что Вы неверно сделали эмуляцию z80. Ибо, через это проходили все создатели эмуляторов на ПЦ. Про Z80, его особенности, есть масса материалов. Включая, недок. особенности. Полагаю, что если бы Вы сделали, хотя бы 99% эмулятор команд Z80, то 54-х страниц на этом форуме не было бы, и у Вас запустился бы без проблем ZX-BASIC. И Большая часть игр. В эмулях, частенько приводится инфа, раскрывающая, что там не так, по сравнению с обычной транскрипцией. Есть команды, которые работают не так как написано. Но в ZX-Basic их нет. У Вас проблемы с загрузкой даже бейсик файлов. О чём это говорит? Да только о некорректной эмуляции Z-80. Я долго нерешался написать, было лень, ждал ну когда же человек-то одумается? Теперь говорю - кривая у вас эмуляция проца. Кроме чтения док надобно все проверять в оочию, на рабочей машинке.. Даже 2 эмулятора могут соврать.

BYTEMAN 3rd April 2011 01:46

Quote:

Originally Posted by Vadim (Post 372287)
Есть команды, которые работают не так как написано. Но в ZX-Basic их нет. У Вас проблемы с загрузкой даже бейсик файлов.

Дык уже вроде всё грузится без проблем?

Vadim 3rd April 2011 01:54

А всё остальное???? Не работает ведь? И почему??????

Lisitsin 3rd April 2011 16:25

Quote:

Originally Posted by osa (Post 372248)
красиво выглядит! Спрайт пропадает-двоится это глюк записи или так и есть?

Запись кривая. На экране всё ровно.

---------- Post added at 15:22 ---------- Previous post was at 15:19 ----------

Quote:

Originally Posted by Hm (Post 372258)
Нда ... действительно. Похоже "имитировать тормоза" так-же придется :)

Не понял. А что, ходит быстрее чем надо чтоли?

---------- Post added at 15:25 ---------- Previous post was at 15:22 ----------

Quote:

Originally Posted by Vadim (Post 372287)
Вы уж извините, наблюдаю за вашей эпопеей с момента её создания. Прихожу к выводу, что Вы неверно сделали эмуляцию z80. Ибо, через это проходили все создатели эмуляторов на ПЦ. Про Z80, его особенности, есть масса материалов. Включая, недок. особенности. Полагаю, что если бы Вы сделали, хотя бы 99% эмулятор команд Z80, то 54-х страниц на этом форуме не было бы, и у Вас запустился бы без проблем ZX-BASIC. И Большая часть игр. В эмулях, частенько приводится инфа, раскрывающая, что там не так, по сравнению с обычной транскрипцией. Есть команды, которые работают не так как написано. Но в ZX-Basic их нет. У Вас проблемы с загрузкой даже бейсик файлов. О чём это говорит? Да только о некорректной эмуляции Z-80. Я долго нерешался написать, было лень, ждал ну когда же человек-то одумается? Теперь говорю - кривая у вас эмуляция проца. Кроме чтения док надобно все проверять в оочию, на рабочей машинке.. Даже 2 эмулятора могут соврать.

Дак я ж не волшебник, я только пока учусь ... Здесь Higgins рулит, я так, исполнитель ...

Higgins 3rd April 2011 17:05

Quote:

Originally Posted by Lisitsin (Post 372438)
Не понял. А что, ходит быстрее чем надо чтоли?

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

Среди других неприятностей могут быть искажение звука и мерцание или даже полное исчезновение спрайтов. И все это может быть даже если времянки исполнения инструкций выдержаны точно. Если же и с ними проблемы, то ко всему перечисленному могут добавиться и проблемы с загрузкой файлов, особенно, если речь идет о турбозагрузчиках.

Может быть, сейчас самая важная задача -- пройти ZEXALL хотя бы для основных инструкций.

Lisitsin 3rd April 2011 17:28

Quote:

Originally Posted by Higgins (Post 372448)
Может быть, сейчас самая важная задача -- пройти ZEXALL хотя бы для основных инструкций.

Согласен. Но боюсь здесь будет нужен более серьёзный инструсент, не такой медленный как порт клавиатуры PC/2.
Zexall стоит на том же самом месте:

Lisitsin 3rd April 2011 18:31

Видеопроблема до конца не решена. Чёрточки при загрузке и во многих играх слетает синхронизация кадров. Буду решать дальше.
ELITE:
http://www.youtube.com/watch?v=F0hAsGGJ9gk

Higgins 3rd April 2011 21:42

1 Attachment(s)
Quote:

Originally Posted by Lisitsin (Post 372455)
Но боюсь здесь будет нужен более серьёзный инструсент, не такой медленный как порт клавиатуры PC/2.

Набросал пару строк. Этот код сравнивает значения регистра AF после операций ALU с непосредственным операндом с теми же операциями ALU с регистровыми операндами. Во время тестирования бордюр белый и результаты выводятся в область атрибутов. Остановка теста с зеленым бордюром означает успешное завершение теста. Красный бордюр означает найденную ошибку. В этом случае интересно содержимое экрана, которое может помочь уточнить проблемное место.

Загружать и запускать код можно так. Набрать:

Quote:

LOAD "" CODE 18432 : PRINT USR 18432
и пустить ленту.

zorel 3rd April 2011 21:47

Lisitsin, а вы через ТВ тюнер подключаетесь? Попробуйте через ТВ. Интересно будут такие помехи или нет.

Lisitsin 4th April 2011 18:59

Quote:

Originally Posted by Higgins (Post 372518)
Загружать и запускать код

Благодарю за помощь !!! Сделал.
http://www.youtube.com/watch?v=I816LApX3NM

Только не очень то мне видно цвет бордюра ....
Может можно его узнать через PRINT PEEK какой нибудь?

---------- Post added at 17:59 ---------- Previous post was at 17:57 ----------

Quote:

Originally Posted by zorel (Post 372522)
Lisitsin, а вы через ТВ тюнер подключаетесь? Попробуйте через ТВ. Интересно будут такие помехи или нет.

Модулятора нет. Сейчас паяю видеокодер на CXA1645. ПАЛ или NTSC какой-нибудь. Если получится.

Higgins 4th April 2011 19:02

Quote:

Originally Posted by Lisitsin (Post 372766)
Только не очень то мне видно цвет бордюра ....

Пока квадратики мелькают, тест работает. Когда перестанет мелькать покажите скриншот и по нему будет понятно есть проблема или нет.

Lisitsin 5th April 2011 00:08

Вот что получается:

Higgins 5th April 2011 12:29

1 Attachment(s)
Quote:

Originally Posted by Lisitsin (Post 372841)
Вот что получается:

Это значит, что есть проблемы с самим исполнением теста.

Давайте попробуем локализовать проблему. В приложении к этому сообщению лежит модифицированная программка. Загружется и исполняется так же, как прежняя. Изменены цвета бордюра (голубой в случае успеха и черный в случае ошибки) и HALT заменен на вечный цикл.

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

Lisitsin 5th April 2011 23:49

Финал получается таким:

Higgins 6th April 2011 00:01

Quote:

Originally Posted by Lisitsin (Post 373206)
Финал получается таким:

Прошли успешно. Делаем два вывода:

1) HALT не работает как положено с запрещенными прерываниями и

2) Проблема с операциями ALU в инструкциях с операндом (HL), таких как XOR (HL). Это те инструкции, которые не проверяются в тесте. Если сходу найти ошибку не получится, я попробую сделать специальный тест на эти инструкции.

Lisitsin 6th April 2011 00:45

Quote:

Originally Posted by Higgins (Post 373214)
HALT не работает как положено с запрещенными прерываниями

Спасибо. Вот как я его делаю:

Клон 6th April 2011 00:52

Quote:

Originally Posted by Ewgeny7 (Post 313375)
Я, честно говоря, очень сомневаюсь в возможности эмуляции процессора на такой низкой частоте МК.

самое главное зачем?
Зачем эмулировать процессор процессором, когда он свободно продается...

Понимаю АУ или УЛА эмулировать, первую трудно найти, второй нет.
Вторую сам бог велел сделать на программируемой матрице, как она и была в реальном фирменном спеке...
Все делано переделано, но щас почитаю во что все это вылилось :)...

osa 6th April 2011 07:53

Клон, это на тяжелые постъядерные времена, когда небудет z80

CodeMaster 6th April 2011 09:30

Quote:

Originally Posted by Клон (Post 373237)
Вторую сам бог велел сделать на программируемой матрице, как она и была в реальном фирменном спеке...

Conan вроде давно должен был получить книгу где должна быть полностью описАна ULA, но что-то молчит, видно увлёкся чтением ;-) Единственно, я что-то не знаю есть подходящие ПЛИС в DIP-40, что бы можно было полностью заменить оригинал или придётся на переходнике ПЛИСину делать.

Клон 6th April 2011 18:21

Quote:

Originally Posted by CodeMaster (Post 373296)
ПЛИС в DIP-40, что бы можно было полностью заменить оригинал или придётся на переходнике ПЛИСину делать

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

Думаю можно было бы через плату-переходник сделать совместимость с оригинальной разводкой.

osa 6th April 2011 18:23

ну, судя по топику эта полноценная замена и рождается на меге.

Клон 6th April 2011 18:26

Quote:

Originally Posted by osa (Post 373405)
ну, судя по топику эта полноценная замена и рождается на меге.

нужно делать матрицу


Quote:

Originally Posted by CodeMaster (Post 373296)
где должна быть полностью описАна ULA

Не обязательно лепить прям точно такую же как была, можно сделать совместимую электрически. Тем более нам нужны свои инты и прочие фишки...

CodeMaster 6th April 2011 18:31

Quote:

Originally Posted by Клон (Post 373403)
чтобы можно было фирменные модели ремонтировать

Ну а для чего она ещё нужна, ИМХО только для этого

Quote:

Originally Posted by osa (Post 373405)
ну, судя по топику эта полноценная замена и рождается на меге.

Ну варианта замены я тут не увидел, это проект сам в себе, кроме того ULA разнесена минимум на 3 ИМС ATMega128, ATtiny2313 и SN74S257

---------- Post added at 17:31 ---------- Previous post was at 17:28 ----------

Quote:

Originally Posted by Клон (Post 373407)
Не обязательно лепить прям точно такую же как была, можно сделать совместимую электрически.

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

Lisitsin 6th April 2011 18:34

Я бы хотел внести некоторое уточнение в рассуждения. Дело в том, что я (теперь уже мы (вместе с Higgins)) эмулируем не столько процессор Z80, сколько Specrum весь целиком. Более того, живой Z80 обладает некоторой избыточностью, которую нге требуется эмулировать, что упрощает задаче. А вот реальная эмуляция Z80 на AVR я боюсь невозможна (скорее всего не хватит производительности на имитацию сигналов шины управления в дополнение к уже написанному).

CodeMaster 6th April 2011 18:39

Quote:

Originally Posted by Lisitsin (Post 373412)
эмулируем не столько процессор Z80, сколько Specrum весь целиком.

Я то так и считал с самого начала, это Клон как всегда во флуд переводит ;-) Хотя реализация ULA на ПЛИС, пусть не в рамках данного проекта интересная идея.
Lisitsin, как закончишь этот проект, раскури её поподробней.

goodboy 6th April 2011 18:59

Lisitsin, возможно вы не видели этот сайт http://www.zxdesign.info/harlequin.shtml и некоторая информация с него окажется полезной.

Клон 6th April 2011 19:11

Quote:

Originally Posted by CodeMaster (Post 373414)
это Клон как всегда во флуд переводит ;-)

вот стрелки не надо переводить...


Quote:

Originally Posted by Lisitsin (Post 373412)
не столько процессор Z80, сколько Specrum весь целиком.

Эмулятор спектрума и так есть на ПЦ. В чем разница? Если просто для спортивного интереса, то тут дело хозяйское.

BYTEMAN 6th April 2011 19:25

Дык уже ULAPlus вроде как уже сделали....


All times are GMT +4. The time now is 16:59.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.