Так это (циклы ожидания) уже будет бОльшое отступление от "правильной" эмуляции (картинки на бордюре и т.д.).Цитата:
дёргать за него, когда центральный обращается к памяти
Вид для печати
Так это (циклы ожидания) уже будет бОльшое отступление от "правильной" эмуляции (картинки на бордюре и т.д.).Цитата:
дёргать за него, когда центральный обращается к памяти
помоему в железе это рулилось так - при 1чке тактового сигнала - память юзал процессор а при нолике тактового - видеоконтроллер. если не ошибаюсь именно это и называлось "прозрачный доступ к памяти". Но было сделано не на всех клонах. Единственно не могу вспомнить к какому из тактовых это привязывалось - 14, 7 или 3.5 мегагерц. Скорее всего к какому либо из первых двух.
Как это реализовано в настоящем Спектруме можно почитать здесь:
http://www.worldofspectrum.org/faq/r...kreference.htm
начиная со слов
Это даст общее представление. Возможно, имеет смысл не реализовывать различные схемы "прозрачного" доступа и затем эмулировать логику ULA в части видеовывода, а реализовать разделение доступа между видеопроцессором и основным процессором сразу так, как это сделано в ULA.Цитата:
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.
Это будет неверное решение. Не надо забывать о том, что "там" использовалась динамическая оперативная память и операция обращения к памями разруливалась автоматом, который формировал, в том числе, такие сигналы как RAS и CAS. В данном случае, надеюсь, память другого типа и все "проще". Да и вообще, о каких там приоритетах может идти речь - я, помнится делал автомат, где коллизий не м.б. в принципе и тайминги 565ру5 это позволяли.Цитата:
сразу так, как это сделано в ULA
Штука в том, что в Спектруме видеовывод, остановки центрального процессора и прерывания жестко связаны между собой. Качественная эмуляция Спектрума подразумевает и эмуляцию этих связей. Поэтому, какого бы типа память ни использовалась, видеовывод приходится реализовывать согласно тому, как работает оригинальный Спектрум с его динамической памятью и всеми остальными особенностями. Я дал ссылку. Почитайте.
Ну, некоторые продвиги есть. Правда изредка слетает:
http://www.youtube.com/watch?v=DI4us7O4KiY
красиво выглядит! Спрайт пропадает-двоится это глюк записи или так и есть?
Нда ... действительно. Похоже "имитировать тормоза" так-же придется :)Цитата:
какого бы типа память ни использовалась
Вы уж извините, наблюдаю за вашей эпопеей с момента её создания. Прихожу к выводу, что Вы неверно сделали эмуляцию z80. Ибо, через это проходили все создатели эмуляторов на ПЦ. Про Z80, его особенности, есть масса материалов. Включая, недок. особенности. Полагаю, что если бы Вы сделали, хотя бы 99% эмулятор команд Z80, то 54-х страниц на этом форуме не было бы, и у Вас запустился бы без проблем ZX-BASIC. И Большая часть игр. В эмулях, частенько приводится инфа, раскрывающая, что там не так, по сравнению с обычной транскрипцией. Есть команды, которые работают не так как написано. Но в ZX-Basic их нет. У Вас проблемы с загрузкой даже бейсик файлов. О чём это говорит? Да только о некорректной эмуляции Z-80. Я долго нерешался написать, было лень, ждал ну когда же человек-то одумается? Теперь говорю - кривая у вас эмуляция проца. Кроме чтения док надобно все проверять в оочию, на рабочей машинке.. Даже 2 эмулятора могут соврать.
А всё остальное???? Не работает ведь? И почему??????
Запись кривая. На экране всё ровно.
---------- Post added at 15:22 ---------- Previous post was at 15:19 ----------
Не понял. А что, ходит быстрее чем надо чтоли?
---------- Post added at 15:25 ---------- Previous post was at 15:22 ----------
Дак я ж не волшебник, я только пока учусь ... Здесь Higgins рулит, я так, исполнитель ...
Без реализации задержек центрального процессора при обращении к видеопамяти и портам некоторые вещи будут работать неправильно, либо вообще не будут работать. Прежде всего это касается спецэффектов, основанных на четкой связи между моментом выборки байта из видеопамяти или цвета бордюра и количеством тактов от начала прерывания, которые к этому моменту должен отработать центральный процессор. Такие эффекты называются мультиколорами.
Среди других неприятностей могут быть искажение звука и мерцание или даже полное исчезновение спрайтов. И все это может быть даже если времянки исполнения инструкций выдержаны точно. Если же и с ними проблемы, то ко всему перечисленному могут добавиться и проблемы с загрузкой файлов, особенно, если речь идет о турбозагрузчиках.
Может быть, сейчас самая важная задача -- пройти ZEXALL хотя бы для основных инструкций.
Видеопроблема до конца не решена. Чёрточки при загрузке и во многих играх слетает синхронизация кадров. Буду решать дальше.
ELITE:
http://www.youtube.com/watch?v=F0hAsGGJ9gk
Набросал пару строк. Этот код сравнивает значения регистра AF после операций ALU с непосредственным операндом с теми же операциями ALU с регистровыми операндами. Во время тестирования бордюр белый и результаты выводятся в область атрибутов. Остановка теста с зеленым бордюром означает успешное завершение теста. Красный бордюр означает найденную ошибку. В этом случае интересно содержимое экрана, которое может помочь уточнить проблемное место.
Загружать и запускать код можно так. Набрать:
и пустить ленту.Цитата:
LOAD "" CODE 18432 : PRINT USR 18432
Lisitsin, а вы через ТВ тюнер подключаетесь? Попробуйте через ТВ. Интересно будут такие помехи или нет.
Благодарю за помощь !!! Сделал.
http://www.youtube.com/watch?v=I816LApX3NM
Только не очень то мне видно цвет бордюра ....
Может можно его узнать через PRINT PEEK какой нибудь?
---------- Post added at 17:59 ---------- Previous post was at 17:57 ----------
Модулятора нет. Сейчас паяю видеокодер на CXA1645. ПАЛ или NTSC какой-нибудь. Если получится.
Вот что получается:
Это значит, что есть проблемы с самим исполнением теста.
Давайте попробуем локализовать проблему. В приложении к этому сообщению лежит модифицированная программка. Загружется и исполняется так же, как прежняя. Изменены цвета бордюра (голубой в случае успеха и черный в случае ошибки) и HALT заменен на вечный цикл.
Если тест завершится корректно, т.е. пусть даже с черным бордюром, но без квадратов в нижних двух третях экрана, значит есть проблемы с исполнением HALT при запрещенных прерываниях. Если эти две трети экрана заполнятся квадртами снова, нужно будет знать содержимое 16-ти квадратов в пятой строке сверху перед остановкой теста. У вас в скриншоте эта строка вся заполнена светлыми квадратами, чего не должно быть никогда, поэтому нужно содержимое этой строки непосредственно до, пока она еще что-то значит.
Финал получается таким:
Прошли успешно. Делаем два вывода:
1) HALT не работает как положено с запрещенными прерываниями и
2) Проблема с операциями ALU в инструкциях с операндом (HL), таких как XOR (HL). Это те инструкции, которые не проверяются в тесте. Если сходу найти ошибку не получится, я попробую сделать специальный тест на эти инструкции.
самое главное зачем?
Зачем эмулировать процессор процессором, когда он свободно продается...
Понимаю АУ или УЛА эмулировать, первую трудно найти, второй нет.
Вторую сам бог велел сделать на программируемой матрице, как она и была в реальном фирменном спеке...
Все делано переделано, но щас почитаю во что все это вылилось :)...
Клон, это на тяжелые постъядерные времена, когда небудет z80
Conan вроде давно должен был получить книгу где должна быть полностью описАна ULA, но что-то молчит, видно увлёкся чтением ;-) Единственно, я что-то не знаю есть подходящие ПЛИС в DIP-40, что бы можно было полностью заменить оригинал или придётся на переходнике ПЛИСину делать.
ну, судя по топику эта полноценная замена и рождается на меге.
Ну а для чего она ещё нужна, ИМХО только для этого
Ну варианта замены я тут не увидел, это проект сам в себе, кроме того ULA разнесена минимум на 3 ИМС ATMega128, ATtiny2313 и SN74S257
---------- Post added at 17:31 ---------- Previous post was at 17:28 ----------
Это рождение неизвестных глюков, вместо известных, отталкиваться надо от оригинала, а остальное это штучные потребности.
Я бы хотел внести некоторое уточнение в рассуждения. Дело в том, что я (теперь уже мы (вместе с Higgins)) эмулируем не столько процессор Z80, сколько Specrum весь целиком. Более того, живой Z80 обладает некоторой избыточностью, которую нге требуется эмулировать, что упрощает задаче. А вот реальная эмуляция Z80 на AVR я боюсь невозможна (скорее всего не хватит производительности на имитацию сигналов шины управления в дополнение к уже написанному).
Lisitsin, возможно вы не видели этот сайт http://www.zxdesign.info/harlequin.shtml и некоторая информация с него окажется полезной.
Дык уже ULAPlus вроде как уже сделали....